用snoopy制作一个采集程序,这个程序逻辑上需要由业务人员来手动开启采集,所以只能制作成web页面的,但是在采集过程中,却遇到了一个问题:

由于采集的数据量很大, 需要Apache很长时间去响应,当超过5分钟的时候,会发生超时,即使程序中设置set_time_limit()也没有效果。当超时后,web页面会显示服务器错误,但是通过后台监控,发现抓取程序其实还在运行,并且运行第二次,这样就会导致这个程序运行了两遍。又检查了Apache日志,发现每次请求超时(5分钟)后,Apache会很快再次发起一个请求,导致了程序的二次运行。

查看了Apache的配置文件,发现了如下参数。

这个参数导致大数据量操作的请求每过300秒就会断线,并且会每300秒重试发送请求。这些会导致web应用异常。

所以最好是优化自己的程序,尽可能的把程序时间压缩在300秒以内,否则的话,可能就只能修改配置文件的 Timeout 了。