我需要继续运行 PHP 脚本,但我有一个问题,目前我使用 putty 登录到服务器然后执行 PHP 代码。当我关闭腻子会话时,脚本会停止执行。
脚步:
- 使用 putty 登录服务器
- 运行 PHP 脚本 例如)PHP 文件名
但是当我关闭腻子会话时,程序显然会关闭。无论是否关闭腻子,我都需要继续在服务器上运行该程序,并且任何登录到服务器的人都可以停止它并作为一个进程再次运行它。如何运行独立于putty会话的php脚本,任何人都可以控制登录到服务器?
我不确定您的问题是否真的在编程范围内,它更像是一个 unix/linux 特定的问题,即“如何从关闭终端时不关闭的 shell 运行程序”。PHP 恰好是那个程序。
你可以做到php -f scriptname.php > /dev/null 2>/dev/null & disown
。
STDOUT 和 STDERR 将被重定向到 /dev/null (或者您可以将它们更改为真实文件),并且 ambersand 将分叉该进程。Disown 将从终端会话中删除正在运行的 PID。
您需要做的是在终止进程之前分叉该进程。这样,当您退出进程(或关闭 ssh 连接)时,辅助进程将继续运行。
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// parent
pcntl_wait($status);
} else {
// child
// write your code here!
}