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