停止在 Linux 终端中运行的 php 脚本的无限循环

停止在 Linux 终端中运行的 php 脚本的无限循环

我目前正在学习一个教程,该教程教授如何在 php 中创建队列。在 php 脚本中创建了无限循环。我简化了代码,以便专注于手头的问题:

while(1) {
        echo 'no jobs to do - waiting...', PHP_EOL;
        sleep(10);  
}

我使用 PuTTy(带有 SSH 连接)连接到我的共享托管帐户 (godaddy) 中的 Linux 终端。如果我php queuefile.php在终端中运行,我知道它将毫无问题地运行(已经用有限的测试代码for循环而不是无限while 循环)。

问题:一旦无限循环开始,我怎样才能退出?我已经在线阅读了创建代码的选项“检查”如果它应该继续循环,类似于下面的代码:

$bool = TRUE; 
while ($bool)
{
  if(!file_exists(allow.txt)){$bool = FALSE}
  //... the rest of the code

尽管我很好奇是否可以在终端中输入一个命令,或者可以按下一组键来导致脚本终止。如果有任何方法可以终止脚本,或者是否有更好的方法使前面的“查看”,我很乐意您的反馈!

答案1

假设您没有安装任何信号处理程序,如果进程位于前台,则可以通过按 Ctrl-C 向进程发送 SIGINT。如果它不在前台,您可以使用pkill -INT -f '^php queuefile.php$'.

默认情况下,php收到 SIGINT 后将退出。

如果由于某种原因安装了信号处理程序,您也可以尝试该TERM信号(默认使用pkill),最终如果您找不到合理的信号来杀死进程,则可以使用(暴力和强制)SIGKILL,通过传递-TERMpkill代替-INT.

相关内容