![停止在 Linux 终端中运行的 php 脚本的无限循环](https://linux22.com/image/88410/%E5%81%9C%E6%AD%A2%E5%9C%A8%20Linux%20%E7%BB%88%E7%AB%AF%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20php%20%E8%84%9A%E6%9C%AC%E7%9A%84%E6%97%A0%E9%99%90%E5%BE%AA%E7%8E%AF.png)
我目前正在学习一个教程,该教程教授如何在 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
,通过传递-TERM
到pkill
代替-INT
.