> 백엔드 개발 > PHP 튜토리얼 > linux crontab计划任务有关,该怎么处理

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

WBOY
풀어 주다: 2016-06-13 10:08:36
원래의
915명이 탐색했습니다.

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

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

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

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

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

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

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿