PHP Umgebung einrichten
Inhaltsverzeichnis |
PHP Einstellungen im Skript verändern
Der Garbage Collector von PHP sieht Session-Dateien, die älter sind, als die unter
session.gc_maxlifetime 1440
definierte Lebenszeit von 24 Minuten (=1440/60) als Löschbar an und vertilgt diese beim Aufruf eines Session_start(). Da dies auf einem Shared Webserver sehr schnell der Fall ist, werden diese Session-Dateien mit großer Wahrscheinlichkeit auch zu diesem Zeitpunkt entfernt. Dumm, wenn man über beispielsweise PEAR-Auth die Expire-/Idle-Time festlegen möchte. Auf einem Testrechner mit wenig Zugriffen kann es sein, dass die Session-Datei noch nicht gelöscht wurde, wenn man nach 24 Minuten erneut auf die Seite zugreift. Somit Wird die Idle-Time wieder verlängert, die Lebenszeit der Session-Datei auch und es entsteht der Eindruck, alles funktioniert, wie es soll. Allerdings nicht auf einem Shared Webserver - da wird mit Sicherheit der GC aktiv und löscht die Datei noch vor der gewünschten Idle-Zeit. Um das zu Umgehen, muss man einen eigenen Speicherort für die Sessions anlegen, um sie vor der Löschwut des GCs im gemeinsamen Verzeichnis zu schützen. Dazu legt man einen Ordner z.B. sess im eigenen Verzeichnis an.
Nun muss man noch den absoluten Pfad zu diesem Ordner herausfinden:
<?php phpinfo(); ?>
In phpinfo.php-Datei schreiben, hochladen, ausführen.
Unter Environment kann man nun in der Zeile DOCUMENT_ROOT den Pfad ablesen, z.B.:
/wunschverzeichnis/foo/bar
Im PHP-Code muss nun die folgende Zeile eingefügt werden:
ini_set("session.save_path", "/wunschverzeichnis/foo/bar/sess");
Nun werden die Session-Dateien im Verzeichnis sess gespeichert und vom GC nur dann angerührt, wenn Session_start() in irgend einem eigenen Skript aufgerufen wird. Liegt der Ordner im öffentlichen Webverzeichnis, sollte man darauf achten, dass der Zugriff auf die Sessiondateien verweigert wird (z.B. über .htaccess Passwortschutz etc.).
Nun besteht aber immernoch die Möglichkeit, dass bei genügent häufigen Seitenaufrufen der GC aktiviert wird und die 1440-Sekunden Lebenszeit der Session-Datei doch wieder berücksichtigt werden. Um die (unbenutzten) Sessions nun auf jeden Fall länger als min. 1440-Sekunden leben zu lassen, muss man die maximale Lebenszeit erhöhen:
ini_set("session.gc_maxlifetime","86400");
Setzt die Lebenszeit auf 24 Stunden. Solange wird die Session-Datei aufgehoben und ein Client kann mit den entsprechend passenden Sessiondaten darauf zurückgreifen und somit die Lebenszeit wieder neu setzen. Wird die Lebenszeit allerdings überschritten und ein weiterer Session_start()-Aufruf (eines anderen Clients) erfogt, so wird die Sessiondatei evtl. (PHP Default zu 1% Wahrscheinlichkeit) gelöscht.
PEAR
PEAR steht für PHP Extension and Application Repository, detailierte Infos hier.
Das PEAR Framework bietet Module, um Datenbankzugriffe zu kapseln, Authentifizierungen vorzunehmen etc.
Installation unter SUSE 10.0
Per YaST das Paket php4-pear installieren.
Leider werden dabei keine PEAR-Module mitinstalliert, sodass man dies mit
pear install <MODULNAME>
nachholen muss.
Dummerweise funktioniert das installieren des Grundpaketes PEAR aber nicht über diesen Befehl, sodass man zuerst eine ältere Version (die aber aktueller ist, als die scheinbar doch installiere?) herunterläd, z.B. auf der Homepage von PEAR: PEAR-1.3.6.tgz. Diese dann mit
pear install PEAR-1.3.6.tgz
installiert.
Anschließend kann man per
pear install PEAR bzw. pear upgrade PEAR
das neueste PEAR-Paket herunterladen.
Außerdem noch das Paket DB.
Wenn Abhängigkeiten bestehen, muss man die benötigten Pakete mit dem install-Befehl vorher installieren.
XDebug und Kcachegrind
Kcachegrind
Möchte man den Hintergrundfarbverlauf (grau) und auch die Farbverläufe in den Elementen des Treeviews entfernen, so muss man leider im Sourcecode Änderungen vornehmen, und diesen kompilieren.
Hintergrundfarbverlauf
In der Datei callgraphview.cpp muss man nach folgenden Zeilen suchen (in Version 0.4.6 von Kcachegrind sind das die Zeilen 1281 - 1284)
void CanvasFrame::drawShape(QPainter& p) { p.drawPixmap( int(x()), int(y()), *_p ); }
Darin kommentiert man die Zeile p.draw.... aus (mit //).
//p.drawPixmap( int(x()), int(y()), *_p );
Elementfarbverlauf
In der Datei treemap.cpp folgende Zeilen ändern:
_shaded = true;
Dies kommt 2x vor, in Kcachegrind 0.4.6 in Zeile 51 und 67. Einfach auf false setzen.
_shaded = false;
In beiden Fällen muss man anschließend noch mit ./configure und make im Grundverzeichnis von Kcachegrind ausführen.
Im Unterverzeichnis kcachegrind kann man dann mit ./kcachegrind das Programm starten.