从命令行运行PHP



我正在尝试管理等待由ffmpeg处理的文件队列。页面是使用CRON运行的,该CRON运行在等待处理的文件数据库中。页面然后构建命令并使用exec()将它们发送到命令行。

但是,当从命令行或CRON运行PHP页面时,它运行exec() OK,但不返回到PHP页面继续更新数据库和其他函数。

的例子:

<?php
$cmd = "ffmpeg inpupt.mpg output.m4v";
exec($cmd . ' 2>&1', $output, $return);
//Page continues...but not executed
$update = mysql_query("UPDATE.....");
?>

当从命令行运行该页时,该命令使用exec()运行,但不执行该页的其余部分。我认为问题可能是我在从命令行运行的页面中使用exec()运行命令。

是否可以从包含exec()的命令行运行完整的PHP页面?

还是有更好的方法?

谢谢。

前段时间我写了一篇关于在Linux上运行PHP后台进程的文章:

<?php system( 'sh test.sh >/dev/null &' ); ?>

注意末尾的&操作符。这将启动一个进程,该进程立即将控制权返回给shell并继续在后台运行。

更多的例子:

<!--
    saving standard output to a file
    very important when your process runs in background
    as this is the only way the process can error/success
-->
<?php system( 'sh test.sh >test-out.txt &' ); ?>
<!--
    saving standard output and standard error to files
    same as above, most programs log errors to standard error hence its better to capture both
-->
<?php system( 'sh test.sh >test-out.txt 2>test-err.txt &' ); ?>

你试过用CURL代替吗?

不确定,但可能是由于cron进程的shell限制,如果它作为网页工作,那么使用它作为网页,设置一个cron作业调用wget wherever_your_page_is,它将通过您的web服务器调用,应该模仿您的测试

相关内容

  • 没有找到相关文章

最新更新