让PHP函数在后台运行

时间:2011-11-10 18:05:05

标签: php

我正在创建一个小插件,从不同的网站获取get数据。数据不一定是最新的,我不想为此使用cronjob。

相反,每次访问网站时,我都要检查数据库是否需要更新。现在需要一段时间才能更新整个数据库,我不希望用户等待它。

有没有办法让我可以触发该功能,但是在后台。用户将正常工作,但在后台数据库正在更新。

3 个答案:

答案 0 :(得分:1)

您希望将exec()与将输出重定向到文件或/ dev / null的命令一起使用,否则PHP将在继续执行脚本之前等待命令完成。

exec('/path/to/php /path/to/myscript.php 2>&1 > /dev/null');

答案 1 :(得分:1)

有很多解决方案可以异步执行PHP代码。最简单的是异步调用shell exec Asynchronous shell exec in PHP。要在PHP中进行更复杂的真正并行处理,请尝试GearmanHere a basic example on how to use Gearman

Gearman背后的想法是,你将通过为工作人员分配任务来为你管理工作。您将编写两个PHP文件:

  1. Worker:包含要异步运行的代码。
  2. 客户端:将调用异步函数的代码。

答案 2 :(得分:1)

您也可以使用pcntl_fork

分叉流程

正如您在php.net示例中看到的那样,在函数调用之后会得到两个执行线程。父线程可以像往常一样完成,而孩子可以继续做它的事情