TS: PHP bzw. Apache mehr Leistung geben

Beitrag lesen

Hello Felix,

Der Apache zieht sich genau die Leistung, die er benötigt. Probiere doch einmal das hier und beobachte im Task-Manager, was passiert:

while (true) {
  file_put_contents(
    './endlos.txt',
    "- eine neue Zeile\r\n",
    FILE_APPEND
  );
}

Diese Vorgehensweise ist mMn nicht zielführend, da die namensbasierten Dateifunktionen (Wrapper) alle "atomistisch" arbeiten, also bei jedem Durchlauf ein Handle anfordern, benutzen, schließen müssen. Das kostet Zeit.

Besser wäre es, eine handlebasierte Funktion fopen() zu benutzen.

Vielleicht magst Du mal die unterschiedlichen Geschwindigkeiten vergleichen?

Selbst, wenn bei file_put_contents() das Handle gehalten wird bis zum Scriptende, muss es doch bei jedem Schleifendurchlauf erst wieder mit dem Namen verbunden werden. Das kostet dann zwar nicht genauso viel Kraft, wie ein neues anzufordern, aber bedeutet auch vermeidbaren Overhead.

Verantwortlich dafür ist mWn der Statusccache. Wenn man z. B. zwischendurch die aktuelle Größe der Datei mit der namensbasierten Funktion filesize() feststellen will, muss man den vorher mit clearstatchache() löschen, während man mit fstat() direkt auf den Infoblock des geöffneten Handles zugreifen kann.

Generell gilt auch in PHP immer noch die Regel:
Je näher man sich an die Funktionen des OS/API hält, desto schneller wird es.

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.