Der Martin: css und js files über php scripte ausliefern

Beitrag lesen

Hallo,

Ich hatte kürzlich auf php 5.3 umstellen lassen und seitdem viele "depracated" Warnungen, weil die es nicht hinkriegen die veralteten Schalter aus der php.ini zu nehmen, die es gar nicht mehr gibt (magic_quotes_gpc, etc). Ein Hinweis vom Support, ich könnte ja die Fehlermeldungsoptionen ändern, fand ich etwas dürftig.

das finde ich nicht dürftig, sondern armselig.
"Überprüfen Sie doch bitte mal die Bremsen an meinem Auto, ich glaube, da ist was nicht in Ordnung." - "Wie wär's, wenn ich Ihnen stattdessen eine lautere Hupe einbaue?"

Können serverseitige Loggingvorgänge die Auslieferungen verlangsamen?

Ja, aber nicht so deutlich.

Ich kann gerade nicht einschätzen, ob 600 ms für ein leeres php-Script akzeptabel ist. Warum braucht eine große JS-Ressource (300kb) nur 150ms?

Du darfst nicht die Auslieferung einer JS-Ressource mit der Ausführung eines PHP-Scripts vergleichen. Im ersten Fall nimmt der Server einfach eine vorhandene Datei und wirft sie dem Client an den Kopf; im zweiten Fall muss er eventuell -je nachdem, wie PHP eingebunden ist- erst den PHP-Interpreter als Kind-Prozess starten, der muss das Script übersetzen und dann ausführen. Das kann schon deutlich länger dauern.

Auf meinem anderen Server braucht ein php-Script mit einem echo "Hello"; gerade mal 50ms.

Ich habe gerade angedeutet, dass die Art der PHP-Einbindung eine große Rolle spielt. Als Apache-Modul ist es "allzeit bereit", als CGI muss es jedesmal separat gestartet werden, als FCGI (Fast CGI) liegt es vom Aufwand her irgendwo dazwischen. Die Ausgabe von phpinfo() sollte dir Auskunft darüber geben (Server API).

Und warum ist die Zeit so viel länger, wenn die Requests direkt hintereinander kommen, als wenn ich sie einzeln aufrufe. Kann ich vielleicht doch noch etwas machen.

Das ist in der Tat eine gute Frage, auf die ich auch keine Antwort habe.

Das hat zwar nicht direkt damit etwas zu tun, aber ich hatte mich damals gewundert, warum meine Ajax-Requests auf php-Scripte sich gegenseitig blockieren und der Grund war, dass pro Session nur eine Verbindung zum Server bestehen durfte. Nachdem ich in jedes Script der Ajax-Requests ein session_write_close(); eintrug ging es. Ich hoffte irgendwie auf so eine Quelle... :)

Hmm, ja, es gibt aus uralten Zeiten eine Empfehlung, dass ein HTTP-Client nicht mehr als zwei gleichzeitige Verbindungen zu einem Server haben sollte. Normalerweise kann man das im Browser einstellen. Im Opera beispielsweise unter Preferences/Advanced/Network/Max. connections to a server; im Firefox finde ich die Einstellung im GUI gerade nicht. In about:config finde ich sie unter dem Schlüssel network.http.max-persistent-connections-per-server, und der Wert (default) ist 6. Eigentlich auch hoch genug, dass das hier gerade noch keinen Flaschenhals bildet - es sei denn, der Server limitiert von sich aus auch die Anzahl der gleichzeitigen Verbindungen pro Client.

Ciao,
 Martin

--
If you believe in telekinesis, raise my hand.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(