Wie kann ich file_put_contents () mit FILE_APPEND | verwenden? LOCK_EX Sicherheit?

9

Ich benutze:

%Vor%

Schreiben Sie an das Ende einer Datei und stellen Sie sicher, dass niemand anderes (oder Skript) gleichzeitig in dieselbe Datei schreibt.

Das PHP-Handbuch sagt, dass es einen falschen Wert zurückgibt, wenn es nicht erfolgreich ist. p>

Wenn die Datei nicht gesperrt werden kann, wird sie fehlschlagen oder weiter versuchen, bis sie es kann? Wenn es fehlschlägt, wenn keine Sperre erreicht werden kann, was wäre der beste Weg, um sicherzustellen, dass die Daten geschrieben werden?

Vielleicht wird die Funktion in einer while-Schleife wiederholt, bis sie nicht false (cringe) zurückkehrt oder den Benutzer (Website-Besucher) einfach mit einer Art GUI versorgt, die sie erneut anfragt?

    
hozza 19.01.2012, 14:40
quelle

2 Antworten

3

Eigentlich war meine vorherige Antwort etwas veraltet. flock() blockiert, bis die angeforderte Sperre angefordert wird :

  

PHP unterstützt eine portable Möglichkeit, komplette Dateien beratend zu sperren (was bedeutet, dass alle zugreifenden Programme die gleiche Art der Sperrung verwenden müssen oder nicht funktionieren). Standardmäßig blockiert diese Funktion solange, bis die angeforderte Sperre übernommen wird. Dies kann (auf Nicht-Windows-Plattformen) mit der unten beschriebenen LOCK_NB-Option gesteuert werden.

Also, da file_get_contents() es benutzt, würde ich annehmen, dass es dasselbe ist. Das heißt, seien Sie gewarnt, dass es pro Betriebssystem variiert.

Etwas wichtiger ist, dass Sie die Datei in dem von Ihnen beschriebenen Szenario nicht sperren müssen, aus den Gründen, die N.B. schon erklärt. Wenn Sie das CLI SAPI nicht verwenden, kann ich mir kein allgemeines Szenario vorstellen, bei dem Sie sich über das Sperren von Dateien sorgen sollten.

    
yannis 19.01.2012 14:50
quelle
0

Wenn die Funktion die Sperre für die Datei nicht erhalten kann, gibt sie einen Fehler zurück, den Sie verwenden können.

%Vor%

Wenn Sie jetzt versuchen, eine Sperre mehrmals zu erhalten, verwenden Sie einfach eine Schleife, um zu versuchen, in die Datei zu schreiben.

    
WojonsTech 25.01.2012 16:25
quelle

Tags und Links