zoukankan      html  css  js  c++  java
  • PHP中curl_init和file_get_contents配合使用

    PHP源码的扩展库中默认存在curl的扩展,编译就可以直接安装。但之前测试过一个远程xml获取代码,使用了curl函数,在刚搭建的vps上无法运行。通过探针查看,发现curl扩展并没有安装上去。

    本来可以重新在apache上添加curl扩展的,但是考虑到以后有些主机并不一定支持curl,为了增加程序的兼容性,于是对源代码做了如下更改:

    function malu_get_url_content($getxml) {
    if(function_exists('curl_init')) {
    $ch = curl_init();
    $timeout = 60;  //curl超时时间
    curl_setopt ($ch, CURLOPT_URL, $getxml);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    echo " (curl) ";
    } else {
    $ctx = stream_context_create(array(
    'http' => array(
    'timeout' => 60 //设置一个超时时间,单位为秒
    )
    )
    );
    $file_contents = file_get_contents($getxml, 0,$ctx);
    echo " (file_get) ";
    }
    return $file_contents;
    }

    以上函数直接使用,$getxml变量传递URL信息,返回变量$file_contents传出获取到的内容。

    对于判断函数还可以这样写:

    if(function_exists('file_get_contents')) {

    优先判断是否支持file_get_contents,这样一来可以根据需要自己调整。两函数均进行了超时控制,防止远程链接失效而导致服务器负载过大。

  • 相关阅读:
    CF854C Planning优先队列|set
    暑假集训-8.9总结
    暑假集训-8.6总结
    AcWing 206. 石头游戏 矩阵乘法|矩阵快速幂
    暑假集训-8.5总结
    KMP 和 扩展KMP
    暑假集训-8.4总结
    暑假集训-8.3总结
    2019牛客暑期多校第二场题解FH
    AcWing 196. 质数距离
  • 原文地址:https://www.cnblogs.com/luowei/p/2709527.html
Copyright © 2011-2022 走看看