Heim > Backend-Entwicklung > PHP-Tutorial > linux crontab计划任务有关,该怎么处理

linux crontab计划任务有关,该怎么处理

WBOY
Freigeben: 2016-06-13 13:41:43
Original
763 Leute haben es durchsucht

linux crontab计划任务有关
现在要跑个计划任务 发短信的。
因为crontab最小只能设置分钟为单位,而短信需要比较快发送。我让一分钟执行发送60条。
从数据库队列表查出未锁定的60条 循环处理的时候 每次更新一个字段表示被锁定。一般短信量很少,1分钟内都执行完了。今天突然一下子有很多,导致一分钟处理60条未处理完,crontab又发出下一次请求。因为是逐个处理完了才做的锁定,所以就出现了并发。(有些短信在这次请求里还未被处理也就会被包含在下一次的请求中)。导致短信重复下发。

一直是想改进这个的,因为一直量比较少,没用心考虑。

应该是将查出来的60条 全部锁定后再做下发处理。但是何时解锁是个问题。

利用第三方队列服务:
想把短信存到数据库,其自增id存到memcacheq中,然后定时执行。(定时执行好像也不行,一分钟一次太慢。用php写个死循环作为守护进程?(可以设置个休息时间)这样一直执行着是否吃内存厉害?)

想知道网站关于下发短信一般是怎么做的?没有守护进程没法做到即时发送吧。。。

------解决方案--------------------
好像弄得有些麻烦?

可以写个shell脚本,每秒用curl请求一次(可以不等请求结束,也可以等执行完再等1秒后发送下次请求),设置一个步长(每次发送的最大数量),然后每次取与步长相同个数的短信,先把它们锁定,然后再逐个发送,即使发送未完成时下一次请求被执行了,这一部分也不会重复发送。
------解决方案--------------------
我这边都是用JAVA做的, 正如你所说的要用守护进程,
python也行,
php也行, 
php写成脚本启动就行了,
------解决方案--------------------
contab 定时调用php程序发短信

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage