PHP 数据采集超时怎处理?

2016-06-03 02:02:26 +08:00
 domino
设置 5 分钟跑一次数据采集入库,
如果采集数据太多,5 分钟还没跑完,
该怎禁止触发下一次 5 分钟执行呢?
3372 次点击
所在节点    PHP
13 条回复
jfcherng
2016-06-03 02:17:30 +08:00
額外建立一個文件例如 working.lock ,採集前判斷此文件不存在,採集後刪除?
msg7086
2016-06-03 04:35:26 +08:00
lincanbin
2016-06-03 09:31:24 +08:00
拿 Memcached 设置个 Flag 不就好了?
rekulas
2016-06-03 09:35:23 +08:00
@lincanbin 为什么我上各种网站都有你
audi
2016-06-03 09:37:33 +08:00
@rekulas 其实这里都是我的马甲,不信我拿其他帐号回复给你看。
jugelizi
2016-06-03 09:38:49 +08:00
@rekulas 哈哈推特 乌云 V2EX 都能看见熟人
lincanbin
2016-06-03 09:39:11 +08:00
@rekulas 因为我无处不在啊。
peter999
2016-06-03 09:52:26 +08:00
@rekulas 我小号特多
dapang1221
2016-06-03 10:21:50 +08:00
你用什么来触发 php ?可以检测一下 php 的返回来判断是否下次继续触发,或者把 5 分钟改小,增加 php 的采集线程数,减少单线程的工作时间。用 memcached 设 flag 也不错,但是感觉为了这一个功能就上 memcached 有些大材小用,除非你们业务本身用到这玩意。。
pubby
2016-06-03 10:27:32 +08:00
也可以使用外部工具,比如 flock

flock -x -w 300 /tmp/task.lock php task.php
z5864703
2016-06-03 18:12:15 +08:00
为什么每五分钟跑,一直跑会有问题么?
持久化处理+队列。应该就完全可以解决楼主的问题了,而且效率和可靠性更好
wxg4net
2016-06-05 10:50:48 +08:00
如果是 cron 定时执行的 请选择 dcron 类似的服务
lslqtz
2016-06-07 04:57:12 +08:00
放个文件 lock ,这个文件在就不执行,只要 php 不超时,入库完让其删掉文件,下次触发照样可以继续执行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX