PHP -后台运行脚本


PHP - run script in background

我必须在后台执行一个php脚本(test.php)。我试过这个,但它不工作:

<?
$cmd = "php /home/megad404/www/prove/test.php &> /dev/null &";
exec('/bin/bash -c "'.$cmd.'"',$output,$return);
if($return===0)
{
    echo 'Successful';
} 
else
{
    echo 'Unsuccessful';
}
?>

它返回" success "但不执行test.php

test.php:

<?
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
?>

test.php每5秒写一个文件,它工作得很好,除非我尝试在后台用第一个脚本执行它。

可能是服务器问题吗?有没有另一种方法在后台运行脚本?

使用shell_exec和nohup

shell_exec("nohup php /home/megad404/www/prove/test.php > /dev/null & echo $!");

使用shell_exec并给出php的绝对路径:

$output = shell_exec("nohup /usr/bin/php7.0 -f /home/megad404/www/prove/test.php &> /dev/null &");

确认php在服务器中的绝对路径。例如,我使用php7.0,绝对路径是/usr/bin/php7.0

同时,给你正在运行的php文件可执行权限。

chmod +x /home/megad404/www/prove/test.php