Heim >Backend-Entwicklung >PHP-Tutorial >Wird file_put_contents in die Warteschlange gestellt und gewartet, wenn es auf eine exklusive Dateisperre stößt?

Wird file_put_contents in die Warteschlange gestellt und gewartet, wenn es auf eine exklusive Dateisperre stößt?

WBOY
WBOYOriginal
2016-10-17 09:30:162262Durchsuche

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
Wenn eine große Datenmenge in eine Datei geschrieben wird, dauert es lange, bis file_put_contents auch Daten in die Datei schreibt , anschließend Ob file_put_contents zu einer Warteschlange wird, um auf den Abschluss des vorherigen Dateischreibvorgangs zu warten

Antwortinhalt:

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
Wenn eine große Datenmenge in eine Datei geschrieben wird, dauert es lange, bis file_put_contents auch Daten in die Datei schreibt , anschließend Ob file_put_contents zu einer Warteschlange wird, um auf den Abschluss des vorherigen Dateischreibvorgangs zu warten

Ja, die Implementierung von file_put_contents ist eigentlich eine einfache Implementierung der Reihe von Operationen von fopen, fwrite, fflush und fclose. Wenn LOCK_EX hinzugefügt wird, führt fopen auch einen Flock aus. Anschließend blockiert dieser Code, bis die Dateisperre aufgehoben wird, bevor die Ausführung fortgesetzt wird. Dieses Warten wird in eine Warteschlange einsortiert.

Darüber hinaus kann das Schreiben übermäßig großer Dateien das maximale Ausführungsereignis von PHP überschreiten und es besteht die Gefahr eines Datenverlusts. Wenn die Daten für Sie wichtig sind, wird empfohlen, selbst eine große Schreibwarteschlange zu implementieren

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn