schneller fopen oder file_get_contents?
ich betreibe mehrere Webseiten mit hohem traffic , der erforderlich ist , werden alle Bilder heruntergeladen sind über image.php?id=IMAGE_ID_HERE
.
Wenn Sie schon einmal getan, bevor , wissen Sie, dass diese Datei zu Lesen die Bild Datei und als echo an den browser mit speziellen Headern .
Mein problem ist , die Last auf dem server sehr hoch ist (150-200) und Befehl TOP zeigt mehrere Instanzen image.php so image.php langsam läuft !
ist das problem wahrscheinlich ist fopen
laden Sie das Bild, um den Speicher vor dem senden an den client. So Lesen Sie eine Datei und führen Sie es durch direkt?
Danke Jungs
UPDATE
Nachdem Sie optimiert den code, verwendet caching, wo immer möglich, tun, erstellen Sie ein CDN . paar Server, sync-Methoden, load-Balancer und kein Grund zur Sorge über Anfragen mehr 🙂
file_get_contents
? Oder warum verwenden Sie nicht nur fphassthru
oder readfile
? Und wenn das nur über custom Header, erwägen Sie die Verwendung mod_cern_meta
oder mod_headers
.Für alle Fragen, die Sie gefragt werden, ob fnA() oder fnB() ist schneller: einfach Profil Ihren code. es wird dir die Antwort geben und die Chancen sind, werden Sie feststellen, dass etwas anderes ist, Bremsen Sie ab.
vorausgesetzt, Sie haben überprüft den code , optimiert alles , entledigte sich der anderen Dinge, bis nichts passiert ?
Warum nicht implementieren, die spezielle Header in Apache oder Nginx conf-Dateien und dienen die Bilder direkt aus den Dateien? Keine Lösung berühren Sie den PHP-Prozessor würde mach es.
Nicht sicher, was Sie versuchen zu sagen, aber in jedem Fall ist die Profilierung der Weg zu gehen, anstatt zu Fragen, für eine synthetische a() vs b().
InformationsquelleAutor Ronan Dejhero | 2011-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
fopen und file_get_contents sind fast gleich
beschleunigen mit der Konsistenz der Seite zu laden, die Sie verwenden können
http://www.php.net/fpassthru
oder, noch besser
http://www.php.net/readfile
mit diesen Funktionen, den Inhalt der Datei direkt gedruckt byte pro byte
im Gegensatz zu file_get_contents, zum Beispiel, speichern Sie die gesamten Daten innerhalb einer Variablen
so, damit diese korrekt funktionieren, müssen Sie deaktivieren Sie das output-buffering (sonst würde es auch machen readfile () - sinnlos) in die Seite dient der Bilder
hoffe, das hilft!
Lassen Sie mich raten, Sie haben Sie nicht einen top-gefüllt mit image.php noch hatte es jemals.
krank versuchen , dass, hoffe, der laden fällt 🙂
ja, verwenden Sie nicht fopen oder file_get_contents, versuchen Sie es mit fpassthru für eine Woche und überwachung des server-load
wenn Sie immer noch Probleme mit dem serverload nach mit fpassthru und Sie sind in der Lage, die Installation von apache-Modulen, können Sie versuchen, mod_xsendfile finden Sie unter diesem link für mehr info codeutopia.net/blog/2009/03/06/...
InformationsquelleAutor
Warum nicht ein cache der image-Inhalte mit apc ?
diese Weise Bild-Inhalt wird nicht gelesen werden von Ihrem Datenträger mehr als einmal.
Ja, ich möchte downvoters würde erklären, warum...
Was bestimmtes problem diesen cache zu lösen wäre?
Auch wenn die website wie viele Treffer als I/O auf der Platte ist hoch, da concurent file_get_contents, in der die Inhalte gespeichert in ram loswerden, dass
Lesen aus dem Speicher ist schneller als das Lesen von der Festplatte
InformationsquelleAutor Paté