我有个curl程序,由于是curl到国外某台web service上面,由于操作时间过长,有时候可能需要10秒左右才能完成,我在想能否将curl里的代码精简一下?不必要的去掉。但是我又不敢乱减,先贴一下我的curl的代码,有没有高手帮忙看看哪几行代码可以去掉不影响使用的?
#POST方法
$curl = curl_init($url);
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );
curl_setopt( $curl, CURLOPT_HEADER, 0 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 );
$response = curl_exec($curl); #GET方法
$curl = curl_init($url);
curl_setopt( $curl, CURLOPT_GET, 1 );
curl_setopt( $curl, CURLOPT_GETFIELDS);
curl_setopt( $curl, CURLOPT_HEADER, 0 ); 
curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 );
$response = curl_exec($curl);

解决方案 »

  1.   

    lz代码已经够精简了,效率问题可能出现在网络或者io上
      

  2.   

    我认为你的问题不是精简,而是要加点什么
    比如
    CURLOPT_USERAGENT
    CURLOPT_REFERER这样才能让对方认为你是一个合法的浏览者,而积极为你服务
      

  3.   


            curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 );也可以去掉?这个看你具体需要做什么。有的可能有用,有的可能没用
      

  4.   

    CURLOPT_HEADER TRUE to include the header in the output.CURLOPT_RETURNTRANSFER TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.这两个参数是对整个请求的影响是0,只是是否自动输出到标准输出的意思。楼主的代码没有可以精简的了。网速慢是没有办法解决的,路过。
      

  5.   

    加上下面两个,或许可以加速curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.domain.com'));//设置http header。www.domain.com为被你抓取的网站域名。curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");//模拟浏览器
      

  6.   

    在美國租個空間來curl美國的內容才是解決問題的根本.就算香港的主機訪問美國也要比大陸強多了.
    各種關鍵詞過濾,不慢都慢了.
      

  7.   

    4楼和5楼的我先看看再说我的真实经历就是,空间先在美国,然后转到香港,现在想转到国内,因为放在墙外,国内用户体验不好,经常有人访问打不开,所以我现在放到sae上面,但是sae的curl有5秒连接超时的限制,如果100次curl,会有3次出错,这才是我发此帖最终目的