我有一个cron工作,正在做一些更新。完成该过程后,我需要运行另一个cron作业,用于将更新后的记录插入到另一个table.For中,这是我正在尝试的脚本。
$output = shell_exec('ps -C php -f');
if (strpos($output, "php do_update.php")===false) {
shell_exec('php insert_process.php');
}但是它没有做任何事情,而且我得到的ps不是内部/外部命令。那么,如何才能确定第一个cron作业执行是否完成呢?一旦执行,我将运行第二个cron来插入数据。任何人都将不胜感激。
发布于 2017-09-13 20:06:25
您可以使用某种锁定文件。
第一个文件:
lockfile.txt (或任何其他名称)的空文件中删除该文件
第二个文件
lockfile.txt的文件是否存在,如果不存在-运行代码发布于 2017-09-13 20:19:26
您可以在运行do_update.php时使用flock向其添加锁,然后在
`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
}https://stackoverflow.com/questions/46196712
复制相似问题