杀死或停止执行CRON发起的PHP脚本?

Sau*_*abh 5 php cron

我已经安排了一个CRON,它每五分钟调用/执行一个PHP脚本.PHP脚本执行以下任务

  1. 检查数据库中的标志值,以确定先前的运行是否仍在执行.DB中的值1表示进程仍在运行,而值0表示不是.
  2. 如果标志值为1,则退出PHP,否则继续执行下一步.
  3. 将数据库中的标志值从0更新为1.
  4. 执行业务逻辑.
  5. 将标志值从1更新回0,以便如果数据在用户表中可用,则可以执行下一个CRON.

到目前为止一切正常,根据用户上传数据的大小,该过程平均需要35到40分钟才能完成.

问题,无论如何,一旦cron启动就杀死或停止执行PHP脚本.可以是一个按钮,让用户停止执行,上传新数据并等待CRON运行.我可以照顾重新设置所有的标志和数据它只是杀死PHP脚本是我想要弄清楚.

我做了一些谷歌,并认为我可以使用一些命令,如:

Killall -9 PHP
Run Code Online (Sandbox Code Playgroud)

杀死服务器上运行的所有php进程,但不知道如何通过PHP执行此操作.

Web*_*ith 5

试试这个:

ps aux |grep 'part_of_the_name_of_your_script'|awk '{print $2}' |xargs kill -9 {}

或者在你的crontab文件中使用crun和variable CRUN_TIME 看看crun -h


小智 1

您可以尝试system()exec(),但它可能不起作用(或返回权限被拒绝错误),因为 cron 进程是由当前用户或 root 执行的,而 Web 服务器用户通常无权访问这些进程。