Opcache auf WAMP-Server unter MS Windows aktivieren

Sonntag, 27. November, 2016

Auf dem Wampserver für Windows wird die opcache DLL mitgeliefert, ist aber nicht aktiv.
Um es zu aktivieren, muss man die php.ini bearbeiten. Man findet Hinweise, wie die Extension zu aktivieren ist. Mein Fehler war, dass ich per Dateimanager die php.ini im Verzeichnis

C:\wamp\bin\php\php5.5.12\

bearbeitete … was zu keinerlei Resultat führte, weil der Apache Daemon die php.ini aus dem Apache-Verzeichnis anzieht:

C:\wamp\bin\apacheapache2.4.9\bin\php.ini

Also …

Schritt 1:
Mit einem phpinfo() in der Ausgabe prüfen, welches die richtige php.ini ist :-)
Oder direkt im Traymenü unter Php die dortige php.ini zum Bearbeiten anklicken.

Schritt 2:
Die php.ini bearbeiten … in der Sektion “[opcache]” ist die Extension zu aktivieren: die Zeile zend_extension=php_opcache.dll eintragen (sie existiert nicht).
Der Eintrag opcache.enable=1 ist hingegen bereits vorhanden:

(...)
[opcache]

zend_extension=php_opcache.dll

; Determines if Zend OPCache is enabled
opcache.enable=1
(...)

Schritt 3:
Apache neu starten. In der Ausgabe von phpinfo() sieht man dann das zusätzliche Modul … und auch Im Tray-Menü Php -> Php Extensions ist opcache ist das Warnsymbol nun weg.
Wer mag, kann noch einen Viewer wählen, um den Speicherstatus zu prüfen, z.B. ob der zugewiesene Speicher für den Cache korrekt ausgelegt ist.

weiterführende Links:

  1. Github: opcache-status
  2. https://easyengine.io/tutorials/php/zend-opcache/ - weitere Webviewer (en)

Pimped Apache Status Beta

Donnerstag, 8. September, 2016

Ich bin dabei, eine Version 2 meines Monitoring Tools Pimped Apache Status bereitzustellen.

Die bestehenden Analyse-Werkzeuge bleiben 1:1 erhalten. Wichtigste Neuheit ist das Admin-Backend: Hier kann man künftig seine Server und Servergruppen für loadbalancte Webseiten per Webbrowser konfigurieren. Bisher musste man dazu eine Config-Datei bearbeiten.

Die Konfigurationsdateien wurden dazu von PHP-Arrays in reine JSON Dateien überführt. Anm.: zur Umwandlung einer 1.x Konfiguration gibt es eine upgrade.php

Aber einmal in Bildern…

Screenshot 1:

  • Das Default-Skin wird ein wenig farbiger: im Menü oben die Icons und die Tabs in der ersten Sub-Navigation
  • In den Kacheln sind wurde eine Kreisgrafik hinzugefügt. Diese hilft beim Bewerten des aktuell angezeigten Wertes: visualisiert ist er im Vergleich zum Maximum der letzten n Werte. Genaueres sieht man dann beim Mouseover über eine Kachel…
  • In der Subnavigation in rot: hier geht es zum Setup

206-09-08-pimped-apache-status-v2beta-01.png

Screenshot 2:

  • Im ersten Tab ist die Konfiguration der Server. Man legt zunächst eine Gruppe an und kann in dieser beliebige Server hinzufügen.
  • in weiteren Tabs kann man die bestehende Konfiguration einsehen: die Default-Einstellungen und die Custom-Settings.

206-09-08-pimped-apache-status-v2beta-02.png

Der Sourcecode der Beta ist in einem Branch auf Github verfügbar. Längerfristig wird der Sourcecode in Github verwaltet werden. Sourceforge wird dann nur noch als Lese-Instanz von Github am Leben erhalten.

Wenn jemand die Beta testen mag, so freue ich mich über euer Feedback.

weiterführende Links:

  1. Github: Pimped Apache Status (Anm.: Seit Veröffentlichung von Version 2 gibt es keinen Beta-Branch mehr)

Objekt mit boolean Attribute per $.ajax senden

Sonntag, 24. Juli, 2016

Ich habe eine kleine PHP-Applikation, die liest Metadaten aus einem JSON-File.
Diese Daten schreibt PHP-Code in ein Html-Dokument als Javascript-Objekt, damit diese in der Seite verfügbar sind.

echo 'var aMetadata=' . json_encode($o->aMetadata, JSON_PRETTY_PRINT) .';';

Wenn ich im Formular die Daten bearbeite und mein aktualisiertes Javascript ans PHP zurücksende, dann in der Form:

   var aMetadata={'title': 'Hello world' }

    $.ajax({
        type: "POST",
        url: sSaveUrl,
        data: {
            function: "setMetadata", 
            value: aMetadata, // <<<<< meine Metadaten
        }
    }).done(function () {
        // ...
    });

Auf Seite PHP wurde $_POST[”value”] der Methode setMetadata() übergeben:

    public function setMetadata($aNewMetadata) {
        if(!is_array($aNewMetadata)){
            echo "ERROR: not an array";
            return false;
        }
        $this->aMetadata=$aNewMetadata;
        return $this->saveMetadata();
    }

Das klappt soweit, bis … ja bis einmal ein boolean Wert übergeben werden soll. Es werden true/ false Werte als Strings in Form von “true”/ “false” vom $.ajax data-Wert gesendet, wenn man das Objekt direkt übergibt. Dann kann schonmal fies werden, wenn lauter korrupte Datensätze entstehen.

[Weiterlesen…]

ahMaphelper (PHP-Klasse) - votet auf phpclasses.org

Montag, 6. Juni, 2016

Ich habe da eine PHP-Klasse, die parst aus einer URL von Karten-Anbietern die Position. Und kann mit einer bekannten Position die URLs zu alternativen Anbietern generieren lassen, die zur selben Position zeigen. Das klappt derzeit mit Google Maps (mit div. Länder-TLDs), Yandex.ru und OpenStreetMap.

Man kann die Klasse also zum Extrahieren einer Position nutzen oder aber zum Konvertieren beim gewünschten Wechsel des Karten-Anbieters.

Die Klasse wurde nominiert für einen Innovation Award auf phpclasses.org.
Wer kann und mag, der vote doch bitte für mich!

Beispiel:

require_once 'ahmaphelper.class.php';
$oMaphelper = new ahmaphelper();
print_r($oMaphelper->getPos("https://www.google.ch/maps/@46.9465944,7.4439426,17z"));

… gibt ein zurück Array (und behält es auch intern):

Array
(
    [source] => https://www.google.ch/maps/@46.9465944,7.4439426,17z
    [provider] => google
    [lat] => 46.9465944
    [lon] => 7.4439426
    [zoom] => 17
)

… und nun zu den anderen Anbietern:

print_r($oMaphelper->getUrls());

zeigt dieses Array:

Array
(
    [google] => https://www.google.com/maps/@46.9465944,7.4439426,17z
    [osm] => https://www.openstreetmap.org/#map=17/46.9465944/7.4439426
    [yandex] => https://yandex.ru/maps/?ll=7.4439426%2C46.9465944&z=17
)

weiterführende Links:

  1. phpclasses.org - Votet für mich!! (en)
  2. Quellcode auf Github (en)
  3. Demo: einmal ein paar URLs ausprobieren (en)
  4. Dokumentation der Klasse (en)

PHP7-Module unter XAMPP aktivieren

Donnerstag, 28. Januar, 2016

Ich habe ein aktuelles XAMPP heruntergeladen, um mit PHP7 zu prüfen, ob “mein” CMS und meine eigenen Klassen noch laufen.
Auf Sourceforge war der Download gar eine Minorversion neuer, als bei apachefriends.org.

Das Aktivieren der PHP-Module erfolgt durch Auskommentieren (Entfernen der Semikolon am Zeilenanfang) der jeweiligen Module in der C:\xampp\php\php.ini.

(...)
; extension=php_bz2.dll
extension=php_curl.dll
; extension=php_fileinfo.dll
(...)

Plus Restart des Apache. Dachte ich.
Mit phpinfo() wurde schnell klar, das Modul ist dennoch nicht aktiv. Die DLLs sind auch im C:\xampp\php\ext\ vorhanden.

Ursache:

Sie wurden nicht per Default gefunden. Es benötigte noch explizit den per Default auskommentierten Wert

extension_dir = "c:/xampp/php/ext/"

Dann ein Restart des Apache. Schon war das Modul da.

weiterführende Links:

  1. XAMPP Download auf apachefriends.org
  2. XAMPP Downoad auf Sourceforge

Diashow: Herbst in Bern

Sonntag, 1. November, 2015

> Diashow starten (für Smartphone-User: Vorsicht Datenmenge!)

2015-11-01-diashow-herbst.png

Ich habe nach einer Diashow gesucht, um mehr meiner Fotos ins Netz zu stellen.

Eine der Möglichkeiten: Fotos im Vollbild.
Die Überblendung rein mit CSS Mitteln fand ich auf tympanus.net. Auf Basis dessen entstand ein erster Prototyp mit Bildern dieses Hersbstes.
Eine PHP-Klasse liest Verzeichnisse, Dateien und Metadaten. Enstpr. Anzahl der Bilder werden HTML-Code und CSS erzeugt. Die Bildreihenfolge ist zufällig und bei jedem Neuladen anders.

Nachteil der Vollbild-Methode:
Meine Bilder sind im Verhälnis 4:3. Je nach Grösse des Browsers, werden Bereiche links+rechts bzw. oben+unten abgeschnitten. Nicht alle Fotos eignen sich dafür.
Ich brauche noch andere Skins, um andere Darstellungen zu ermöglichen, wo man stets das gesamte Foto sieht.

Und noch fehlen mir ein paar Funktionen, die ich noch nachrüsten möchte…

Weiterführende Links:

In den Top 10 der Downloads auf phpclasses.org

Montag, 24. August, 2015

In der Summe der Downloads bin ich auf Rang 5

2015-08-25-phpclasses-top-downloaded-authors-small.png

… meine Klasse zum Cachen von Daten ist dabei am meisten abgerufen und in der Woche auf Platz 9:

2015-08-25-phpclasses-top-downloaded-classes-small.png

Update:
Die Screenshots der Wochenstatistik sind vom Montag… warten wir mal noch ein paar Tage :-)

weiterführende Links:

  1. Axels Webseite: AhCache
  2. Axels Docs: AhCache (en)
  3. Klasse AhCache auf phpclasses.org (en)

Pimped Apache Status - votet auf phpclasses.org

Sonntag, 2. August, 2015

Mein Pimped Apache Status wurde auf phpclasses.org für den Award Juli 2015 nominiert …

2015-08-02-phpclasses-org-nominee.png

Votet doch bitte für mich :-)

weiterführende Links:

  1. phpclasses.org: Votet bitte für Pimped Apache Status
  2. Axels Webseite: Pimped Apache Status
  3. Sourceforge: Projektseite und Download (en)
  4. Axels Webseite: Dokumentation (en)

Pimped Apache Status 1.22

Freitag, 26. Juni, 2015

Der Pimped Apache Status ist ein Werkzeug, um aus der “normalen” Apache Status Seite etwas Lesbares, und Durchsuchbares zu machen. Es ist ein Tool für die Live-Ansicht der aktuellen Prozesse des Apache Webservers. Verschiedene Ansichten listen aktive Requests, häufigste Aufrufe, aktivste IP-Adressen, längste Requests u.v.m. in sortierbaren und filterbaren Tabellen auf. So findet man schnell die Ursache aktueller Performance-Engpässe. Das Ganze funktioniert auch bei loadbalancten Webseiten: mehrere Server können zu einer Ansicht zusammengefasst werden. Ein integrierter Updater aktualisiert das Tool im Webbrowser. Ein Must-Have für Sysadmins und Hoster.

In dieser Version ist als wichtigste Neuerung eine Javascript Klasse hinzugekommen. Diese nimmt pro Kachel oben die Werte mit gemessenem Zeitpunkt auf und speichert diese im Localstorage des Webbrowsers. Sind einige Werte aufgezeichnet, lässt sich damit eine Grafik des Verlaufes zeichnen.

Nach der Aufzeichnung einiger Messwerte erscheint beim Mouseover einer Kachel die History als Balkengrafik. Klickt man die Kachel an, bleibt diese Grafik zunächst stehen.

2015-06-26-pimped-apache-status-v122.jpg

weiterführende Links:

  1. Axels Webseite: Pimped Apache Status
  2. Sourceforge: Projektseite und Download (en)
  3. Axels Webseite: Dokumentation (en)

Pimped Apache Status nun mit Bootstrap

Samstag, 30. Mai, 2015

Ich hab gar nicht gezählt, in wievielen Projekten ich schon Bootstrap verwendet habe. Nun, auf jeden Fall kam nun mein Apache Monitoring hinzu, auf das die Ansichten nun mit einem klareren Design daherkommen.

2015-05-30-pimped-apache-status.png

weiterführende Links:

  1. Sourceforge: Projektseite und Download
  2. Axels Webseite: Dokumentation
  3. Bootstrap