<?php
echo file_get_contents('http://www.baidu.com/');
?>我用以上代码测试,读取百度的首页,刷新很多次,偶尔能成功一次,极其不稳定,以前程序都好好的,但是这两天不行了,不知道是不是服务商那边做了什么设置呢?我是独立的主机啊win2003 +php-5.2.6

解决方案 »

  1.   

    http://topic.csdn.net/u/20090303/09/C8605FE9-9D4D-4B9C-9EC6-9C3CE966599E.html百度内容肯定不好抓
      

  2.   

    用CURL吧,速度比FILE()或FOPEN()都快,参考http://curl.haxx.se/libcurl/ 
    简单点的 
    <? 
    $url='http://www.163.com'; 
    ob_start();                                                                            //打开输出缓冲区 
    $ch = curl_init();                                                            //初始化会话 
    curl_setopt( $ch, CURLOPT_URL, $url );                        //设定目标URL 
    curl_exec( $ch );                                                                //发送请求 
    //$retrievedhtml = ob_get_contents();                                  //返回内部缓冲区的内容 
    //ob_end_clean();                          //删除内部缓冲区的内容并关闭内部缓冲区 
    curl_close( $ch );                        //会话结束 
    ?> 
    复杂点的 
    <? 
    $url='http://202.201.7.9/CSTJ/Sear.dll?SearchZK'; 
    $param='E=%3C1%2C4%3E%3A%28%28Title_C%3DCAm%29*Years%3D%282002%2B2003%2B2004%2B2005%2B2006%2B2007%29%29&S=1&N=20&P=1&C=0&H=%28%CC%E2%C3%FB%3DCAD%29*Year%3D2002-2007&M=&KM=&GX=&CSID=%7BC8E8BDCF-73D3-45F2-9FE9-89C8B28A02D1%7D';                                                //指定POST数据 
    ob_start();                                                                            //打开输出缓冲区 
    $ch = curl_init();                                                            //初始化会话 
    curl_setopt( $ch, CURLOPT_URL, $url );                        //设定目标URL 
    curl_setopt( $ch, CURLOPT_POST, 1 );                            //设定表单发送方式为POST 
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $param );    //POST数据 
    curl_exec( $ch );                                                                //发送请求 
    //$retrievedhtml = ob_get_contents();                                  //返回内部缓冲区的内容 
    //ob_end_clean();                          //删除内部缓冲区的内容并关闭内部缓冲区 
    curl_close( $ch );                        //会话结束 
    ?> 
    通过程序模拟访问网页的方法有SOCKET通信方式、FOPEN方式、第三方组件(如:libcurl)等。当网页文件很大或者网页根本不存在的时候,使用FOPEN的方法经常会出现超时。在实际工程应用中,必须考虑系统的性能及可移植性。Web信息获取工具是系统性能好坏的一个最重要的技术环节,不论是采用PHP中的SOCKET通信方式还是FOPEN方式都不能胜任如此频繁的文件获取时间要求。系统采用性能优异的CURL访问组件,该组件远程访问速度比传统方式速度快了近200倍,采用FOPEN方式对于100个HTTP文件请求每分钟只能打开10个,而采用CURL组件方式对于2000个HTTP文件请求每分钟可以打开2000个[4]。该组件支持FTP,FTPS,TFTP,HTTP,HTTPS,TELNET,DICT,FILE和LDAP协议的访问,极大地提高了Web会话的速度和协议范围。此外,该组件支持多种开发语言工具的驱动,主要包括C、C++、PHP、PERL、JAVA、.NET等,支持广泛的操作系统,包括Solaris、NetBSD、FreeBSD、OpenBSD、HPUX、IRIX、AIX、Tru64、Linux、UnixWare、Windows等,具有广泛的可移植性,为程序开发打造了良好的接口。 
    参考http://blog.csai.cn/group.asp?cmd=show&gid=83&pid=2697
      

  3.   

    php.ini文件中 把 max_execution_time 值 设的大一点,300  或 1000
    或者在你的php代码第一行 加上 set_time_limit(0);
    试过没有 ??