course.php pid,如何在php中找到PID

我正在写一个将通过cron运行的php脚本.它的任务是调用其他PHP脚本.被调用的脚本也可以在外部执行.我想要的是,当一个文件正在执行时,它不应该同时执行.为了清楚起见,请考虑以下内容

假设有一个脚本master.php,它一个接一个地调用另外两个脚本script1.php和script2.php.现在,一旦它调用了script1.php,它就会开始执行并花费10分钟来完成它的处理.这个Script1.php也可以由用户在这10分钟内单独运行.

我想要做的是当这个脚本在其处理过程中时,它不应该只是平行执行.

有没有办法实现这个目标? (也许通过检查script1.php的PID).

Thanx提前.

解决方法:

这就是我用pid文件做的方法.此外,如果脚本运行超过300秒,它将被终止:

$pid_file = '/var/run/script1.pid';

if (file_exists($pid_file)) {

$pid = file_get_contents($pid_file);

if ($pid && file_exists('/proc/' . $pid)) {

$time = filemtime($pid_file);

if (time() - $time > 300) {

posix_kill($pid, 9);

} else {

exit("Another instance of {$argv[0]} is running.\n");

}

}

}

$pid = posix_getpid();

if (!file_put_contents($pid_file, $pid)) exit("Can't write pid file $pid_file.\n");

然后取消链接脚本末尾的pid文件:

unlink($pid_file);

如果要在第一个实例完成时运行脚本 – 将exit()替换为sleep(1)并将整个块放在循环中.

标签:php,cron,pid

来源: https://codeday.me/bug/20190826/1729339.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值