服务器端调度任务:需要调度一个频率为5秒的任务



我需要编写一个服务器端程序,该程序位于服务器上,并一致地检查数据库中的新条目。

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

重要的是要注意,这个过程不是由新条目的出现引起的,而是由程序自己检查新条目引起的。

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

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

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

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

#!/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.com和https://gist.github.com/alister/1386212

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

最新更新