在我的PHP脚本(作为Cron作业运行)中,我有
foreach($sites as $site)
{
exec('./wkhtmltoimage-amd64 ' . $site . ' somefile.png');
exec('./zopflipng -y somefile.png somefile.png');
}
每月为每个站点生成屏幕截图。
现在,此cron作业每月运行一次,并且在极少数情况下有人希望在该作业运行时删除映像,我不太确定会发生什么。图像被使用后会不会被删除吗?如果是这种情况,那么在不再使用它后如何将其删除?
我想到了一个可以终止该过程的解决方案,但是我也不确定结果。如果我用
lsof -t somefile.png
这将给我该过程的PID。这样,我可以使用以下命令删除网站的删除功能中的进程
exec('lsof -t somefile.png | kill -15');
杀死后,此帖子顶部附近的原始脚本是否还会继续?这项工作会被取消吗?Cron作业是否出错?我希望它能够继续前进到下一个站点。
我想我只是测试一下文件是否存在,如果确实存在,则将其翻转。您应该能够从PHP相当容易地测试文件是否存在。您也可以在运行函数时从外壳程序(可能是Bash或Bourne Shell)执行此操作exec()
。
exec('[ -f somefile.png ] && ./zopflipng -y somefile.png somefile.png');
解决您的问题的其他方面。如果您要问当您在PHP程序的kill
一个或exec
多个for
循环中进行一个或两个循环时会发生什么,那么答案将是您的for
循环应继续进行并继续下一次迭代而不会出现任何问题。
的exec
的是从你的PHP脚本独立的过程,所以,除非你exec的他们,做他们返回的状态代码什么的,调用者应该是没有,他们无论是成品还是被打死的聪明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句