如何找到完成或仍在运行的第一个cron作业进程?

时间:2017-09-13 11:46:30

标签: php cron

我有一个正在做一些更新的cron工作。完成该过程后,我需要运行另一个cron作业,将更新的记录插入另一个表。为此,我正在尝试这个脚本。

 $output = shell_exec('ps -C php -f');
if (strpos($output, "php do_update.php")===false) { 
  shell_exec('php insert_process.php');
}

但它没有做任何事情,我得到ps不是内部/外部命令。 那么如何才能找到第一个cron作业执行完成?一旦执行完毕,我将运行第二个cron来插入数据。任何霍普都会非常感激。

2 个答案:

答案 0 :(得分:1)

你可以使用某种锁文件。

第一档:

  1. 在第一个脚本的开头,在名为lockfile.txt(或任何其他名称)的磁盘上创建空文件
  2. 最后从磁盘中删除文件
  3. 第二档

    1. 检查名为lockfile.txt的文件是否存在,如果不存在 - 运行代码

答案 1 :(得分:1)

您可以使用flock运行do_update.php为其添加锁定并在

`insert_process.php` run the process if your previous lock is released

do_update.php中添加此

$fp = fopen("lock.txt", "r+");

if (flock($fp, LOCK_EX)) {

  //do your process

  flock($fp, LOCK_UN); //release the lock

}

insert_process.php中添加此

$fp = fopen("lock.txt", "r+");

if (flock($fp, LOCK_EX | LOCK_NB)) { // checks for the lock

// do your process
}