`
alfred_long
  • 浏览: 566777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

file_get_contents 注意及使用curl替换

阅读更多

使用简单便捷的 file_get_contents("http://example.com/") 函数,来获取一个 URL 的返回内容,但是,如果 http://example.com/ 这个网站响应缓慢,file_get_contents() 就会一直卡在那儿,不会超时。PHP 脚本会一直执行下去。这样,当所有的 php-cgi 进程都卡在 file_get_contents() 函数时,这台 Nginx+PHP 的 WebServer 已经无法再处理新的 PHP 请求了,Nginx 将给用户返回“502 Bad Gateway”。

所以,要做到彻底解决,只能改掉直接使用 file_get_contents("http://example.com/") 的习惯,而是稍微修改一下,加个超时时间,用以下方式来实现 HTTP GET 请求。要是觉得麻烦,可以自行将以下代码封装成一个函数。

 

 

<?php  
$ctx = stream_context_create(array(  
   'http' => array(  
       'timeout' => 1 //设置一个超时时间,单位为秒  
       )  
   )  
);  
file_get_contents("http://example.com/", 0, $ctx);  
?>  

   备注:有时候这个超时时间不起作用,还是用curl函数来获取更好,file_get_contents 获取本地文件可能相对好些。

curl 函数简单获取内容:

    public function curls($url, $timeout = '10')
    {
        // 1. 初始化
        $ch = curl_init();
        // 2. 设置选项,包括URL
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        // 3. 执行并获取HTML文档内容
        $info = curl_exec($ch);
        // 4. 释放curl句柄
        curl_close($ch);

        return $info;
    }

 

 

 

分享到:
评论

相关推荐

    比file_get_contents稳定的curl_get_contents分享

    本文将详细讨论`file_get_contents`和`curl`的区别,以及为何`curl_get_contents`可能比`file_get_contents`更为稳定。 `file_get_contents`是一个非常简单且易于使用的函数,它能够读取文件或者URL的内容。然而,...

    PHP file_get_contents 函数超时的几种解决方法

    2. **性能考虑**:在某些情况下,`file_get_contents` 可能比 `cURL` 更快,但具体性能取决于许多因素,包括网络环境、服务器响应时间以及所使用的特定功能。 3. **代理使用**:如果你需要通过代理服务器获取远程...

    关于file_get_contents返回为空或函数不可用的解决方案

    如果你使用file_get_contents获取远程文件内容返回为空或提示该函数不可用,也许本文能帮到你! 使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url...

    file_get_contents获取不到网页内容的解决方法

    本文将详细讲解当`file_get_contents`获取不到网页内容时,如何通过使用cURL库来解决这个问题。 首先,`file_get_contents` 的基本用法是这样的: ```php $content = file_get_contents('http://example.com'); ``...

    解决PHP curl或file_get_contents下载图片损坏或无法打开的问题

    当使用file_get_contents函数直接下载图片时,如果没有考虑到服务器可能返回的压缩内容,就可能会导致获取到的数据无法被正确解析为图片,从而出现损坏。同样的,使用cURL获取内容时,如果不设置正确的HTTP头信息...

    PHP file_get_contents设置超时处理方法

    具体到file_get_contents的使用,如果遇到超时错误,可以通过查看错误提示来判断错误类型,常见的超时错误是读取超时。为了避免或解决这类问题,可以尝试以下两种方法: 1. 增加超时的时间限制:通过设置context的...

    PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    解决这个问题的一种方法是使用 `cURL` 库代替 `file_get_contents`。`cURL` 提供了更丰富的配置选项,可以处理 GZIP 压缩。在 `cURL` 设置中,添加 `CURLOPT_ENCODING` 参数,并将其值设为 `"gzip"`,如下所示: ``...

    php中使用Curl、socket、file_get_contents三种方法POST提交数据

    不过,`file_get_contents` 不支持所有协议,且不提供一些高级特性,如自定义头信息、POST 数据或超时控制。当需要更复杂的网络操作时,`file_get_contents` 可能不够用。 3. **Socket** Socket 提供了底层网络...

    深入file_get_contents函数抓取内容失败的原因分析

    下面是file_get_contents和curl两个函数同样功能的不同写法file_get_contents函数的使用示例:复制代码 代码如下:&lt; ?php$file_contents = file_get_contents&#40;‘https://www.jb51.net’&#41;;echo $file_...

    php采用file_get_contents代替使用curl实例

    file_get_contents代替使用curl其实不多见了,但有时你碰到服务器不支持curl时我们可以使用file_get_contents代替使用curl,下面看个例子。 当用尽一切办法发现 服务器真的无法使用curl时。或者curl不支持https时。...

    深入file_get_contents与curl函数的详解

    示例中的 `vita_get_url_content()` 函数就是这样实现的,先尝试使用 `file_get_contents`,如果失败则转而使用 `curl`。但是,如果两者都被禁用,此函数将无法正常工作。 关于 `file_get_contents` 和 `curl` 的...

    解决file_get_contents无法请求https连接的方法

    如果您无法修改服务器配置,或者上述方法不适用,您可以选择使用cURL库来代替 `file_get_contents`。cURL是一个强大的URL传输库,支持多种协议,包括HTTPS。下面是一个使用cURL的示例函数 `http_request`,它封装了...

    解析PHP中的file_get_contents获取远程页面乱码的问题

    function curl_get($url, $gzip=false){ $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 返回结果而不是直接输出 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); // 设置连接...

    php中file_get_content 和curl以及fopen 效率分析

    PHP提供了多种方法来实现这一目的,其中最为常见的三种方式是使用file_get_contents()函数、curl扩展以及fopen()函数。虽然这三个函数都可以实现资源的读取,但是它们的效率和适用场景存在差异。本篇将详细分析这三...

    PHP中使用file_get_contents post数据代码例子

    需要注意的是,虽然file_get_contents()能够完成发送HTTP请求的任务,但在实际的Web开发中,使用专门的HTTP客户端库(如cURL)或者框架提供的HTTP客户端功能会更加方便和可靠。cURL提供了更多配置选项,更好的错误...

    php基于curl重写file_get_contents函数实例

    另外,curl的性能比file_get_contents高,所以用curl重写file_get_contents function _file_get_contents&#40;$s&#41; { $ret = ; $ch = curl_init($s); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch...

Global site tag (gtag.js) - Google Analytics