为什么在PHP中使用"锁定"文件而不仅仅是计算进程?

Ske*_*ets 5 php daemon command-line-interface

我已经看过很多例子,其中使用"锁定"文件来跟踪PHP脚本当前是否正在运行.

例:

  1. 脚本开始
  2. 检查当前是否锁定了"/ tmp/lockfile"
  3. 如果已锁定,请退出.如果没有,请锁定文件并继续

这样,如果长时间运行的脚本启动两次,则只运行第一个实例.哪个好.

但是,这似乎是错误的方法.为什么我们不检查进程是否已经像这样运行?

if(exec("ps -C " . basename(__FILE__) . " --no-headers | wc -l") > 1){
  echo "Already running.";
  exit;
}
Run Code Online (Sandbox Code Playgroud)

这种方法有潜在的缺陷吗?为什么我经常看到"锁定"文件解决方法?使用我们正在寻找的名称计算流程似乎更准确....