PHP 脚本在终端运行但不在后台运行

问题描述 投票:0回答:2

我遇到了奇怪的错误,从一天起就试图找出答案,却毫无头绪。

我在

/home/myname/script.php
有一个脚本,其中包含

 <?php
while(True) {
    echo "You said: ".$argv[1];
    sleep(5);
}

当我像这样直接在终端上运行时:

/usr/bin/php /home/myname/script.php hello

我得到了预期的输出,并且脚本没有停止。但如果我这样做

/usr/bin/php /home/myname/script.php hello &

它立即停止,而不是像这样在后台运行。

[1]+  Stopped  /usr/bin/php /home/myname/script.php hello

有什么想法吗?

php linux command-line-interface
2个回答
1
投票

使用

nohup /usr/bin/php /home/myname/script.php hello &
.

要验证,您可以将输出重定向到

nohup /usr/bin/php /home/myname/script.php hello > log.txt &


0
投票

用途:

nohup php file.php &

或避免将输出发送到 nohup.out

nohup php file.php &> /dev/null

要在没有 nohup 的情况下在后台运行它,请输入:

<?php
ignore_user_abort(1);

在 php 代码的开头。

默认情况下,当用户中止它时(无论是在服务器上还是在终端上运行),php 文件将终止,并将其放在后台以某种方式使它认为它已被中止。

还有:

set_time_limit(0);

如果您的 php.ini 设置中设置了 max_execution_time 限制,将保持其运行

请注意,内存问题等其他因素可能会导致脚本终止,在这种情况下,最好使用 nohup。

© www.soinside.com 2019 - 2024. All rights reserved.