PHP语言适合于快节奏开发,中小型应用系统,开发成本低,能够对变动的需求作出迅速反应。据说你想要进行利用PHP进行揭秘批量图片处理?程序执行超时怎么办?怎么进行调整?
接下合肥达内PHP培训来跟大家说重点:我们的主要目的是尽可能地延长程序执行时间,使该抓到的图片都抓到,并处理完成写到数据库。
我们的环境是基于nginx的PHP5.6,首先代码上要注意的,一个是放上set_time_limit(0),这避免去调整PHP.ini,当然有些基本的比如很大内存等等还是要调的。
另一个必须要设置curl的CURLOPT_TIMEOUT(我用的CURL抓远程图片)考虑到图片都是在已知的多台服务器上,超时抓不到一定是有问题的索性放弃,如果不设置这个超时,运行时会不停地给你报错。
接下来就是服务器了,首先是nginx的程序执行时间:
fastcgi_connect_timeout 900s;
fastcgi_send_timeout 900s;
fastcgi_read_timeout 900s;
这个配置在nginx.conf内,有则修改值,没有追加上,时间上根据自己情况设置,调整后重启服务。
MYSQL也会报超时错误,修改my.ini添加或修改一下配置:
wait_timeout=2880000
interactive_timeout=2880000
max_allowed_packet=100M
调整后重启mysql以便生效,经过上面的设置,基本扫清超时报错的各种情形,我的程序跑了2天3夜,采集和生成共计86G图片。
再强调一下,这么操作并不十分推荐,特别是生产环境下,会带来很多问题,更重要的是完成批量任务后,恢复上述设置。