2016-05-22 12 views
0

Ich versuche Caching auf stark genutzten Webseiten in PHP zu verwalten. Ich habe einige cachefähige Abschnitte von PHP-Code markiert, die ich nur ausführen möchte, wenn der Administrator Änderungen im CMS vornimmt. Dazu verwende ich diese Methode:Dateien richtig überschreiben

Ich habe Datei (zum Beispiel "index-source.php") mit einigen markierten Ares von PHP-Code, die allein interpretierbar sind. Wenn ein Administrator einige Einstellungen ändert, werden diese markierten Teile ausgeführt und durch Ergebnis ersetzt (zum Beispiel MySQL-Abfragen, die Menüelemente aus der Datenbank lesen, werden durch das generierte HTML-Menü ersetzt). Die gefundene Datei wird als neue "index.php" gespeichert, die noch etwas PHP-Code enthält, der nicht durch Caching optimiert werden kann.

Nun zu meinem Problem Wenn wir davon ausgehen, dass dieser Server heavilly Last ist, die bedeuten, dass es zum Beispiel 100 Anfragen pro Sekunde ist, die in PHP-Datei index.php erfordert. Wenn ich file_put_contents() verwenden werde, um diese index.php mit einer neuen Pre-Cached-Version zu überschreiben, besteht dann die Gefahr, dass einige Anfragen aufgrund einer gesperrten/nicht vollständig überschriebenen Datei unterbrochen werden? Grundsätzlich möchte ich irgendwie meine PHP-Datei aktualisieren und sicherstellen, dass PHP eine vollständige alte oder vollständige neue Version dieser Datei enthält oder einige Millisekunden warten, bis die Datei überschrieben wird. I dont't möchte PHP fehlschlagen oder teilweise überschriebene Datei laden.

Ist das möglich? Danke

+2

100 Anfragen pro Sekunde ist nicht stark –

+0

geladen Das einzige Beispiel war. Es kann Situationen geben, in denen 100 req/s für einen Artikel von Tausenden anderen sein können. Es war nicht als repräsentative Probe der gesamten Website gedacht. –

Antwort

0

file_put_contents ist nicht das, was Sie wollen.

Werfen Sie einen Blick auf dieses Projekt und tauchen Sie ein in die Quelle, um ein Gefühl dafür zu bekommen, welche Herausforderungen Sie sich stellen müssen und welche Lösung Sie wählen.

https://github.com/PHPSocialNetwork/phpfastcache

+0

Danke, ich werde versuchen, mich zu informieren. Ich möchte nur diese Option als sehr einfache und universelle Caching-Lösung für mein CMS, die keine erweiterten Einstellungen, Tweaks, spezielle PHP-Module oder Konfiguration benötigt. –

+0

Nun habe ich den Quellcode für "Dateien" Treiber von phpfastcache untersucht und es löst dieses Problem nicht. Also existiert dieses Problem entweder nicht und es ist sicher, oder es hat auch dieses Problem. Es überschreibt die Cache-Datei einfach mit fopen/fwrite/fclose und verhindert nicht das Lesen unvollständiger Dateien. –

+0

Ja, das Überschreiben des Caches ist korrekt. Das Überschreiben der Quelldatei ist nicht möglich. Wie auch immer, ich dachte, es könnte helfen. –

Verwandte Themen