首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找第一个cron作业进程已完成或仍在运行?

如何查找第一个cron作业进程已完成或仍在运行?
EN

Stack Overflow用户
提问于 2017-09-13 19:46:30
回答 2查看 42关注 0票数 0

我有一个cron工作,正在做一些更新。完成该过程后,我需要运行另一个cron作业,用于将更新后的记录插入到另一个table.For中,这是我正在尝试的脚本。

代码语言:javascript
复制
 $output = shell_exec('ps -C php -f');
if (strpos($output, "php do_update.php")===false) { 
  shell_exec('php insert_process.php');
}

但是它没有做任何事情,而且我得到的ps不是内部/外部命令。那么,如何才能确定第一个cron作业执行是否完成呢?一旦执行,我将运行第二个cron来插入数据。任何人都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-09-13 20:06:25

您可以使用某种锁定文件。

第一个文件:

  1. 在第一个脚本的开头在磁盘上创建名为lockfile.txt (或任何其他名称)的空文件
  2. 在末尾从disk

中删除该文件

第二个文件

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

Stack Overflow用户

发布于 2017-09-13 20:19:26

您可以在运行do_update.php时使用flock向其添加锁,然后在

代码语言:javascript
复制
`insert_process.php` run the process if your previous lock is released

在您的do_update.php中添加以下内容

代码语言:javascript
复制
$fp = fopen("lock.txt", "r+");

if (flock($fp, LOCK_EX)) {

  //do your process

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

}

在您的insert_process.php中添加以下内容

代码语言:javascript
复制
$fp = fopen("lock.txt", "r+");

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

// do your process
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46196712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档