0

我需要编写一个服务器端程序,它存在于服务器上,并且不断检查数据库中的新条目。

当数据库中出现新条目时,程序应该处理数据并将结果放在其他地方。

重要的是要强调该过程不是由出现的新条目引发的,而是由程序自行检查新条目引起的。

一些与我交谈过的人提出了 cron 工作,我很好奇如果这对我来说是解决方案怎么办?我看到它有局限性,它不会每分钟运行一次。我希望程序每 5 秒运行一次,我最好写一个 shell 脚本还是盗版修复?

4

2 回答 2

0

在处理我一直在处理的队列时,我经常使用一种技术。

#!/bin/sh
php -f checkDBAndAct.php
sleep 5
exec $0

exec $0部分再次启动脚本运行,在内存中替换自身,因此它将永远运行而不会出现问题。PHP 脚本使用的任何内存在退出时都会被清除,所以这也不是问题。

一条简单的行将启动它,并将其放入后台:

cd /x/y/z ; nohup ./loopToProcessDB.sh &

或者可以在机器以各种方式启动时类似地启动(例如 Cron 的'@reboot ....')

-- 来自https://stackoverflow.com/a/2686100/6216 扩展版本在 http://PHPscaling.comhttps://gist.github.com/alister/1386212

虽然我会使用实际的队列系统,而不是数据库,因为将数据库弯曲到这个任务有很多缺点。

于 2013-08-06T16:37:52.707 回答
0

我不确定这是否是传统的(?)但是......

在运行外部程序(PHP、Python 等)的 INSERT 上使用数据库触发器。您使用的是哪个数据库?我认为这篇文章很旧,但可能会有所帮助:http ://crazytechthoughts.blogspot.co.uk/2011/12/call-external-program-from-mysql.html

于 2013-08-06T16:26:44.917 回答