我有一些我想作为后台进程运行的 PHP 代码。该代码检查数据库以查看它是否应该执行任何操作,然后在再次检查之前执行或休眠一段时间。当它做某事时,它会将一些东西打印到标准输出,因此,当我从命令行运行代码时,我通常会以明显的方式将 PHP 进程的输出重定向到一个文件:php code.php > code.log &
.
从 shell 运行代码本身可以正常工作;我现在正试图让它在从 Web 进程启动时运行——我有一个页面可以确定 PHP 进程是否正在运行,并让我启动或停止它,具体取决于。我可以通过以下方式开始该过程:
$the_command = "/bin/php code.php > /tmp/code.out &";
$the_result = exec($the_command, $output, $retval);
但是(这就是问题所在!)输出文件/tmp/code.out
————没有被创建。我已经尝试了、 和的所有变体exec
,但它们都不会创建文件。(现在,我将文件放入以避免所有权/权限问题,顺便说一句。)我错过了什么吗?在这种情况下重定向会不起作用吗? shell_exec
system
/tmp