PHP执行后台命令行脚本

时间:2014-09-03 10:45:28

标签: php shell command-line background

不确定怎么说这个......但是这里有。

我有一个PHP脚本,我想在后台运行,但我想从另一个php网页调用它。

这就是我试图称之为:

if (isset($_REQUEST['go']) && $_REQUEST['go'] =="monitor" ) {
   echo "background script running";
   $cmd = "php -n monitor.php";
   shell_exec("$cmd > /dev/null 2>&1 &");
   exit;
}

显示器非常简单。它登录到数据库并检查特定值。 如果未找到该值,则会不断重复该过程,每隔xx秒检查一次,以查看该值是否已设置。

如果发现它会更新日志并退出。

我遇到的问题是监视器在命令行中工作正常,但我似乎无法通过浏览器中的其他页面调用它。

有什么想法吗?

由于

更新

   $cmd = "php -n monitor.php";
   shell_exec($cmd);

这可以工作,但它会使页面保持活动状态。一旦我尝试在后台运行它就会失败。

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

尝试使用以下方法

$command = '/usr/bin/php -n [PATH]/[FILENAME].php >> /tmp/test.log';

确保您对定义的日志文件具有写入权限。

使用execbacktick代替shell_exec。