In diesem Artikel wird hauptsächlich der Vergleich blockierender und nicht blockierender Methoden zum Schreiben von Dateien mithilfe von Flock in PHP vorgestellt. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Herausgeber, um einen Blick darauf zu werfen. Ich hoffe, es kann allen helfen.
Schreibcode blockieren: (Alle Programme warten vor der Ausführung auf das Ende der letzten Programmausführung und brechen nach 30 Sekunden ab)
<?php $file = fopen("test.txt","w+"); $t1 = microtime(TRUE); if (flock($file,LOCK_EX)) { sleep(10); fwrite($file,"Write something"); flock($file,LOCK_UN); echo "Ok locking file!"; } else { echo "Error locking file!"; } fclose($file); $t2 = microtime(TRUE); echo sprintf("%.6f",($t2-$t1));
Schreibcode nicht blockierend : (Solange die Datei belegt ist, wird Fehler beim Sperren der Datei angezeigt!)
<?php $file = fopen("test.txt","a+"); $t1 = microtime(TRUE); if (flock($file,LOCK_EX|LOCK_NB)) { sleep(10); fwrite($file,"Write something"); flock($file,LOCK_UN); echo "Ok locking file!"; } else { echo "Error locking file!"; } fclose($file); $t2 = microtime(TRUE); echo sprintf("%.6f",($t2-$t1));
Verwandte Empfehlungen:
Umfassendes Verständnis von Coroutinen und Blockierung in PHP
Detaillierte Erläuterung der klassischen und nicht blockierenden