PHP - 在后台运行脚本

时间:2013-04-17 12:52:35

标签: php 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';
}
?>

返回“Successful”但不执行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秒写一个文件,它工作正常,除非我尝试在后台用第一个脚本执行它。

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

2 个答案:

答案 0 :(得分:0)

使用shell_exec和nohup

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

答案 1 :(得分:0)

使用shell_exec并为php提供绝对路径:

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

只需确认服务器中php的绝对路径即可。例如,我使用的是php 7.0,绝对路径为/usr/bin/php7.0

另外,从代码中授予正在运行的php文件的可执行权限。

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