【发布时间】:2015-12-21 09:32:25
【问题描述】:
我需要创建一个不能被其他脚本或进程删除的锁定文件。我试过这个:
$f = fopen($pidFile, 'w');
fwrite($f, getmypid());
flock($f, LOCK_EX);
但是从当前用户启动的任何其他进程都可以删除$f 文件,即使文件句柄仍然被正在运行的脚本打开。如何解决这个问题并防止其他人(即非PHP进程)删除文件?进程退出时自动释放锁?所有类似的问题都以 RTMflock() 结尾,但没有一个回答如何针对外部进程锁定文件。
操作系统是Linux 2.6.32-431.el6.x86_64
【问题讨论】:
-
flock是“建议性的”,并不严格。在对脚本中的文件进行任何操作之前,请使用 additional check。如果它是关于您自己的 PHP 脚本,这将起作用。如果是关于外部进程 - 那么flock无法保存案例。 -
正如我在问题中提到的,我需要锁定文件以防止从外部进程中删除(即非 PHP)
标签: php file-locking