Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当您按住ctrl+;从CLI下载它?_Php_Linux_Command Line Interface_Background Process - Fatal编程技术网

Php 当您按住ctrl+;从CLI下载它?

Php 当您按住ctrl+;从CLI下载它?,php,linux,command-line-interface,background-process,Php,Linux,Command Line Interface,Background Process,我在我们的一台服务器上看到奇怪的磁盘活动。我能想到的唯一一件事是,在白天,许多PHP进程都是以屏幕模式从CLI启动的,如下所示: php -f myprocess.php 当我注意到磁盘问题时,我通过附加屏幕、ctrl+c进程和退出屏幕来终止这些进程。我假设这将退出PHP进程。但是,一个小时后,磁盘活动仍然非常频繁,并且会造成阻碍。(我不是系统管理员,因此无法追溯活动。)我知道,当您向服务器发送ajax请求,然后中止该请求(jqxhr.abort())时,服务器仍将执行该请求。我认为当从CLI

我在我们的一台服务器上看到奇怪的磁盘活动。我能想到的唯一一件事是,在白天,许多PHP进程都是以屏幕模式从CLI启动的,如下所示:

php -f myprocess.php
当我注意到磁盘问题时,我通过附加屏幕、ctrl+c进程和退出屏幕来终止这些进程。我假设这将退出PHP进程。但是,一个小时后,磁盘活动仍然非常频繁,并且会造成阻碍。(我不是系统管理员,因此无法追溯活动。)我知道,当您向服务器发送ajax请求,然后中止该请求(
jqxhr.abort()
)时,服务器仍将执行该请求。我认为当从CLI执行“请求”时,可能会发生类似的情况。请求通过SSH在家中完成


那么,我的行为是否正确,进程是否已停止,或者它们是否可能一直运行到完成?

让我们构建一个小测试:

# File: infinite.php
<?php
while (true) { sleep(1); }
Ctrl+C在屏幕1中显示进程,同时从屏幕2观看进程

结果: 这个过程结束了。Ctrl+C终止活动屏幕的PHP进程



如果您的客户端由于会话超时而关闭,您可能会发现进程继续运行。

足够清晰和简单的测试用例。谢谢添加一个边界案例:如果您的php脚本在后台打开某个进程(例如,另一个php脚本)并使用(popen、pclose)断开连接,则不能使用ctrl+c杀死子进程,并且
watch ps aux
将看不到它
$ php infinite.php                        # screen one
$ watch -n 1 "ps aux | grep infinite.php" # watch the process (screen two)