手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

crontab 式的多线程

首页 > Linux >

不要被标题所疑惑,这是一个伪多线程。
其实就是利用Crontab的最小单元(分钟)来实现所谓的多线程。因为PHP本身不支持多线程,只有这样将就着了。
我有500条数据需要更新获取状态,但如果一下子获取500条,也是从1~500的循环,而且由于每次获取数据量都较大,内存容易占满,会导致获取数据大概在300多条时就内存出错,所以利用crontab造了个伪线程。

crontab 每分钟执行一遍程序。
每次执行的时候,计数数+20,同时一次获取20条状态,下一次获取的时候,从21开始,如此类推。
为了防止执行过多,因此,利用ps aux|grep xxxx|wc -l来获取有多少条命令在执行。当超过N时,退出不执行。避免内存消耗过多。

如此,原来500条数据获取,如果正常也需要1小时左右,现在换成这种执行方式,反而快了很多。
记录一下,下次就知道了。PHP果然还是不太适合做一些东西,内存在堆积过多后,再怎么释放也释放不干净啊,我即使ini_set('memory_limit','1024M')也没有用。

下次试试python。python的网络库也不错,而且编码库对字符串转换也非常方便。下次折腾折腾




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: crontab

« 上一篇 | 下一篇 »

只显示10条记录相关文章

让CRONTAB精确到秒的执行任务 (浏览: 24175, 评论: 0)
翻译:crontab的介绍 (浏览: 20758, 评论: 0)
动态添加和删除crontab (浏览: 16918, 评论: 0)

发表评论

评论内容 (必填):