在我的PHP代码中,我想创建一个读/写代码.因此,将会有一个PHP代码读取或写入的文件.只能有1位作者,或者可以有很多读者,但您可以同时进行书写和阅读.
如何在PHP中完成?我相信你需要使用flock代码?
我与Danack的评论 -的PHP文件中flock()包含一个很好的例子:
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // exclusive lock will blocking wait until obtained
fwrite($fp, "Write something here\n");
// or ...
execute_code_that_shouldnt_run_twice_at_the_same_time();
flock($fp, LOCK_UN); // unlock
} else {
echo "failed to obtain lock";
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
请注意,flock()在默认模式下,阻塞等待直到它可以获得锁定.如果其他进程当前获得锁定,则这是常规的.
但是不要期望太多flock()功能.它使用所谓的咨询锁,其他进程可以忽略它.以Linux为例,PHP flock()正在使用内核函数flock(),man 2 flock解释它是如何工作的:
flock()只放置咨询锁; 给定对文件的适当权限,进程可以自由地忽略flock()的使用并对文件执行I/O.
意思flock()只是给其他过程提供建议.如果他们不关心他们可以阅读甚至写,无论锁(或锁的类型).然而,手册页是关于Linux的,其他系统可能会以不同的方式处理它 (实际情况并非如此)
但是,无论您是进程的编码器,您都可以/并且应该在flock()每次访问文件时都关心锁定.但是你不能确定另一个进程 - 比如文本编辑器 - 不会覆盖你的文件
| 归档时间: |
|
| 查看次数: |
4701 次 |
| 最近记录: |