1

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

我搜索并得到了一些代码,例如

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

但是我应该把这段代码放在哪里,这样这个查询才能连续运行?

4

1 回答 1

3

是的,与号技巧会起作用。您可以使用类似每隔几个小时重新启动它的东西supervisord,以便处理任何内存泄漏。如果它崩溃或挂起,这也使它不那么脆弱。

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

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

于 2013-11-02T13:00:20.800 回答