I know file_put_contents() makes it really easy to append data to a file in PHP. I'd like to try using PHP "threads" to file_put_contents()
to the same log file from different PHP threads. Is there a risk in running file_put_contents() on the same file from different PHP threads or will these threads happily block if the file is locked or being accessed by another thread?
EDIT: Found a similar question that recommends flock(), but the risk question does not seem to be fully addressed. Are these "atomic" write operations?
as it says on the man page (that you gave a link for!):
// Write the contents to the file, // using the FILE_APPEND flag to append the content to the end of the file // and the LOCK_EX flag to prevent anyone else writing to the file at the same time file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
Use the LOCK_EX
flag to prevent double writes
Simple answer, yes. clashes can occur
use something like file_put_contents($location, $data, FILE_APPEND | LOCK_EX);
When you expect multiple instances to write to the same file, you should acquire an exclusive lock so no other processes can write to the file until the current one has finished writing it's data
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With