我想在用户提交新记录时触发脚本更新某些统计信息,但我不希望用户在重定向之前必须等待脚本完成。
>-- Time -->
> redirect User -> User Does Stuff -> more stuff -> etc
/
User Input -> Submit ->
\
> updating stats in background -> Possibly still running
在PHP中执行此操作的最佳方法是什么?
为Fabrik编辑
用户希望看到反映新数据添加的即时反馈,但这些新数据每天只有2到3次,所以我认为基于时间间隔的CRON作业可能是不必要的服务器资源使用和也不能满足他们的紧迫性需求。希望这有帮助!
答案 0 :(得分:1)
我对php background process进行了快速谷歌搜索,大多数点击建议使用exec
或shell_exec
来调用您想要在后台运行的脚本。
编辑: This article似乎与您的问题最相关。
答案 1 :(得分:1)
如果您只需要一个小代码片段,我会选择以下内容:
<?php
if($new_record) {
exec("php /path/updateStats.php ".escapeshellarg($userid)." >/dev/null &");
your_redirect_call_etc();
}
重定向输出流和'&amp;'将导致exec调用独立于脚本运行。
如果您需要更大/可扩展的解决方案,您可以查看类似Gearman的内容,这样您就可以轻松地在另一台服务器上运行这些后台作业。
答案 2 :(得分:0)
不错的图表,但是: