日期:2014-05-17  浏览次数:20481 次

大虾!帮我看看这个娶图函数到底出错在哪~

function get_content_by_socket($url){ 
$url = eregi_replace('^http://', '', $url);
$temp = explode('/', $url);
$host = array_shift($temp);
$url = ''.implode('/', $temp);
$temp = explode(':', $host);
$host = $temp[0];
$port = isset($temp[1]) ? $temp[1] : 80;
//echo $url;
//echo $host;
   $fp = fsockopen($host, 80) or die("Open ". $url ." failed"); 
    $header = "GET /".$url ." HTTP/1.1\r\n"; 
    $header .= "Accept: */*\r\n"; 
    $header .= "Accept-Language: zh-cn\r\n"; 
   $header .= "Accept-Encoding: gzip, deflate\r\n"; 
   $header .= "If-Modified-Since: Tue, 06 Apr 2010 07:56:03 GMT; length=2235\r\n"; 
    $header .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.4)\r\n"; 
    $header .= "Host: ". $host ."\r\n"; 
$header .= "Referer: http://video.baidu.com/v?word=11&ct=301989888&rn=20&pn=0&db=0&s=0&fbl=800\r\n"; 
//fputs($content, "Referer: $domainrn");//伪造部分 
    $header .= "Connection: Keep-Alive\r\n"; 
    $header .= "Cookie: BAIDUID=5F96971273579588527A980F307E8B7A:FG=1\r\n\r\n"; 
    //$header .= "Connection: Close\r\n\r\n"; 

    fwrite($fp, $header); 
    while (!feof($fp)) { 
        $contents .= fgets($fp, 8192); 
    } 
    fclose($fp); 
    return $contents; 



函数可以正常使用 但是取图的速度非常慢

而且当同时取三到四张时就一张也取不到

PHP

------解决方案--------------------
能运行就表示没有错了,运行慢可能与网络有关

就函数本身而言:
eregi_replace 已经列在废止系列中,应改用 preg_replace
php 提供有 parse_url 函数,用于分析 url。不再需要用字符串函数和数组函数自己处理
百度的图片有防盗链保护,你发送固定的 cookie 似乎是不对的