日期:2014-05-16  浏览次数:20618 次

PHP+LINUX+设置计划任务在后台跑
如题:想实现以下步骤
1、用PHP实现在web页面可以傻瓜设置任务的执行时间间隔
2、在LINUX上创建一个后台任务,根据用户设置的时间定时执行

PHP也有自带函数,但感觉效率不好,所以求大神给具体一点的操作方法
现主要问题有:如何创建后台任务;时间间隔被用户修改后,shell脚本如何知道或者修改;

------解决方案--------------------
cron tab来做计划任务,调用脚本
------解决方案--------------------
很明显应该写一个独立于php外部的server进程来做定时器。

php只是把任务通过某种形式(存DB,存MQ,或者short-connect通知给server),由server去完成定时任务的触发。


如果是我来设计,写一个c/c++ server进程,监听网络连接,php接到页面请求后短连接到server把任务告诉server,然后server将定时任务持久化到DB(并标明server id为task ownner),并在内存中维护倒计时。

server不停检查任务倒计时,到点则标记DB该任务为running状态,执行完成后从DB中删除task。

如果崩溃重启则重新加载db中属于自己id的task到内存中维护。

如果崩溃后无法重启,那么其他server都应该有定时逻辑去检查DB中属于其他server id并且超时未执行的任务,将它们重置到自己的id之下并执行。
------解决方案--------------------
看下这篇文章:
http://3aj.cn/php/89.html