最近在一家公司实习,按照他们技术总裁的要求写一个URL连接检查器,从数据库里面select出url后判断他的访问状态生成报告,php或者python任选,我自然选择了自己最熟悉的php了
但是程序跑了一遍以后发现几个问题,首先是1w3k 条记录下用foreach去循环每个数组中的URL,效率太低下,只有几个数据还好,1w3k算不上海量,但是也不少了,设置curl超时时间为3秒还是时间太长,完整的跑一次要一个上午,这个还不是最恼人的,关键是好奇怪的误报问题,明明浏览器下面可以访问,为什么他取回的就是http 403呢?
考虑Useragent过滤,没错,确实有这个问题,但是是少数,仔细思考无奈只能求职Google
SEE:http://forums.devshed.com/php-development-5/trouble-with-a-curl-request-in-php-445222.html
为了加快速度,我设置了不读取body
[php]curl_setopt($curl, CURLOPT_NOBODY, true);[/php]
这样的话,如果http服务器不允许 HEAD 命令,就会返回403错误。
解决办法:使用GET
[php]curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');[/php]
学习了。