Linux-crontab 执行PHP 脚本超时

发布于 2016-10-30 22:08:50 字数 130 浏览 1429 评论 8

需求:crontab 每天凌晨12 点统计 100 组服务器的数据到本地数据库;
注: 每组服务器的从查询很慢

伪php代码

for(;;){
//查询每组服务器
//入库
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

偏爱自由 2017-10-09 02:05:31

可以使用PHP 的 popen(command,mode) 函数,实现异步;

 for(;;){
popen('ecex.php','r')
}

在 ecex.php 里实现一组服务器的查询和入库

浮生未歇 2017-07-11 01:15:53

既然瓶颈在从服务器, 何不用并发的方式来同时处理100个从服务器

灵芸 2017-06-17 09:57:28

这种情况下就建议使用异步处理(或者说是并行处理)了,虽然PHP本身的确没有提供好的异步方法,但是可以通过fopensock()等方式进行异步调用,这样等待全部的脚本执行完成返回结果后退出即可,我在徳问上看到过类似的问题,地址如下:https://www.wenjiangs.com/group/topic-13319.html

我也看了其他的回答,个人感觉如果每台机器上都部署crontab并向“本地”汇报的话,应该是比较麻烦,而且效果不理想,不如本地进行100个线程对远程进行查询操作。
这样的话可以只在一台机器上发出请求,等待自己的100个异步线程(不知道线程在这里用的合不合适)完成后即可。

泛泛之交 2017-05-07 04:35:01

我认为这样比较合适:
第一步,你每台服务器每天把数据以log的方式输出到服务器某一目录下,这个是实时输出,即有数据就马上输出到目标目录。
第二步,写一个同步程序,实时的把每台服务器上的最新数据同步到一个公共服务器上,这里最好把这个同步程序封装成类似同步客户端或工具的东东,每装一台服务器就安装同步工具。
第三步,就是你说的每天凌晨12点本地服务器(或其他要获取的服务器,这里很灵活)向公共服务器获取所有数据,然后分析入库

夜无邪 2017-02-28 16:47:39

php脚本就统计一个服务器上的数据,然后用shell脚本分别运行这个php脚本

浮生未歇 2017-02-04 04:53:10

在100组服务器上放置统计数据的php代码 生成数据文件
在主服务器上crontab 分别去调用100组服务器上的php文件 再把生成的数据文件传回主服务器
再在主服务器上 进行汇总
这样应该会快很多

灵芸 2017-01-07 21:02:39

超时的话,可以设置执行时间

void set_time_limit (int seconds)

参数设置为0即可

你也可以看看这个帖:http://www.codingcool.com/2012/10/10/关于php实现守护进程的代码/

浮生未歇 2017-01-07 02:40:23

如果现在碰到的问题是PHP超时问题,那么我认为是不是可以从入口方式上考虑调整一下。
目前是100台服务器,如果将来更多怎么办?
因此,我建议的设计原则:
1. 定期任务这里的PHP只是起到启动任务的工作。具体只实现如下功能:
a. 定时启动任务
b. 分发任务到实际业务处理程序或新fork进程出来进行独立处理
c. 将调度情况记录到日志中。
d. 由于可能每个任务都可能处理超时,因此,不建议在这个脚本中再去监控处理结果。
2. 在调用分派任务上,可以考虑使用curl_multi_init 的形式,进行并发处理。只要处理好瞬时high CPU的问题。应该一定程度上能够解决问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文