【发布时间】:2013-04-24 16:54:37
【问题描述】:
我有一些 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 以避免所有权/权限问题,顺便说一句。)我错过了什么吗?在这种情况下重定向会不起作用吗?
【问题讨论】:
标签: php file shell shell-exec io-redirection