【发布时间】:2013-07-06 10:43:41
【问题描述】:
我想在后台运行一个 php 脚本,因为它需要很长时间,我不想等待它。
这个问题涉及到:
php execute a background process
我试图在我的 linux centos 机器上进行这项工作,但不幸的是它似乎无法正常工作。
这是我的代码:
$cmd = 'php '.realpath($_SERVER["DOCUMENT_ROOT"]).'/test/sample.php';
exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
exec(sprintf("$s > $s 2>&1 & echo $1", $cmd, $outputfile),$pidArr);
sleep(2);
print_r($outputfile);
print_r($pidfile);
我包含了 sleep(2) 以确保 sample.php 脚本完成。 sample.php 只包含 echo 'Hello world';我尝试了两个 exec 选项,但都没有工作。上面的脚本没有显示任何输出。
我尝试在 linux 命令行中运行相同的 $cmd,它显示了 sample.php 脚本的输出。
我想先运行它,但除此之外,我还想将变量发送到 sample.php 脚本。
非常感谢您的帮助。
【问题讨论】:
-
令牌/cron:留下一个令牌,它可以是文件中的一行或数据库条目或类似的东西,由长期运行的 cron 作业搜索并控制其行为通常是从浏览器运行后台进程的好选择。管理员可以更好地控制 cron 作业的运行频率、它拥有的权限以及它正在做什么。
-
谢谢,但我想在用户访问这个 php 脚本时立即运行它。