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