2013-11-02 43 views
1

我正在使用MySQL为PHP中的Android应用创建web服务。我想持续检查是否有任何数据可用。我不知道如何将数据作为后台进程。如何在没有任何请求或没有调用文件的情况下执行查询?在PHP中永久运行后台进程

我搜索,得到了像

$command = "php -d max_execution_time=50 -f myfile.php '".$param."' >/dev/null &"; 
exec($command); 

不过,我应该把这个代码,所以此查询将连续运行一些代码?

回答

3

是的,符号技巧将起作用。您可以使用类似supervisord之类的内容每隔几个小时重新启动一次,以便处理任何内存泄漏。这也使它不易脆弱,如果它崩溃或挂起。

此外,你可以使用类似cron的东西来运行一个任务10分钟,然后关闭并等待cron重新启动它 - 记住,对于大多数后台任务,无论是否有短时间内任务没有运行,因为它会赶上。在每次运行中,检查前一个是否仍在运行是值得的,并且如果是,则提前退出:这样,在从数据库检索工作时,没有两个后台任务会导致竞争条件。

最后,您可以使用作业服务器,如Gearman。这将允许您以异步方式向其发送任务,并且它们将由工作任务(按时间或优先级顺序)运行。这可能是最可靠的方法,但需要更多的工作来设置。这里有一个PHP模块,但根据我的经验,使用它比使用Net_Gearman, which is available in PEAR更麻烦。

+0

thanx bro,它通过简单地添加cron作业来完成。 –