我有一个正在做一些更新的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来插入数据。任何霍普都会非常感激。
答案 0 :(得分:1)
你可以使用某种锁文件。
第一档:
lockfile.txt
(或任何其他名称)的磁盘上创建空文件第二档
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
}