开发者

Is there a risk in running file_put_contents() on the same file from different PHP threads?

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开发者_如何学Python" 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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜