中易网

php获取数据为什么curl获取不完整?而用file_get_contents能获取完整?

答案:1  悬赏:60  
解决时间 2021-03-12 19:19
如题。 curl代码如下: 返回的信息不完整: ————————————————————————————- 而用file_get_contents能得到完整数据: 现在问题是用file_get_contents速度太慢了,局域网读取都得20秒左右!怎样能用curl实现呢?
最佳答案
因为,PHP CURL库默认1024字节的长度不等待数据的返回,所以你那段代码需增加一项配置:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 给你一个更全面的封装方法:
function req_curl($url, &$status = null, $options = array())
{
    $res = '';
    $options = array_merge(array(
        'follow_local' => true,
        'timeout' => 30,
        'max_redirects' => 4,
        'binary_transfer' => false,
        'include_header' => false,
        'no_body' => false,
        'cookie_location' => dirname(__FILE__) . '/cookie',
        'useragent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',
        'post' => array() ,
        'referer' => null,
        'ssl_verifypeer' => 0,
        'ssl_verifyhost' => 0,
        'headers' => array(
            'Expect:'
        ) ,
        'auth_name' => '',
        'auth_pass' => '',
        'session' => false
    ) , $options);
    $options['url'] = $url;

    $s = curl_init();

    if (!$s) return false;

    curl_setopt($s, CURLOPT_URL, $options['url']);
    curl_setopt($s, CURLOPT_HTTPHEADER, $options['headers']);
    curl_setopt($s, CURLOPT_SSL_VERIFYPEER, $options['ssl_verifypeer']);
    curl_setopt($s, CURLOPT_SSL_VERIFYHOST, $options['ssl_verifyhost']);
    curl_setopt($s, CURLOPT_TIMEOUT, $options['timeout']);
    curl_setopt($s, CURLOPT_MAXREDIRS, $options['max_redirects']);
    curl_setopt($s, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($s, CURLOPT_FOLLOWLOCATION, $options['follow_local']);
    curl_setopt($s, CURLOPT_COOKIEJAR, $options['cookie_location']);
    curl_setopt($s, CURLOPT_COOKIEFILE, $options['cookie_location']);
    if (!empty($options['auth_name']) && is_string($options['auth_name']))
    {
        curl_setopt($s, CURLOPT_USERPWD, $options['auth_name'] . ':' . $options['auth_pass']);
    }
    if (!empty($options['post']))
    {
        curl_setopt($s, CURLOPT_POST, true);
        curl_setopt($s, CURLOPT_POSTFIELDS, $options['post']);
        //curl_setopt($s, CURLOPT_POSTFIELDS, array('username' => 'aeon', 'password' => '111111'));
    }
    if ($options['include_header'])
    {
        curl_setopt($s, CURLOPT_HEADER, true);
    }
    if ($options['no_body'])
    {

        curl_setopt($s, CURLOPT_NOBODY, true);
    }
    if ($options['session'])
    {
        curl_setopt($s, CURLOPT_COOKIESESSION, true);
        curl_setopt($s, CURLOPT_COOKIE, $options['session']);
    }
    curl_setopt($s, CURLOPT_USERAGENT, $options['useragent']);
    curl_setopt($s, CURLOPT_REFERER, $options['referer']);
    $res = curl_exec($s);
    $status = curl_getinfo($s, CURLINFO_HTTP_CODE);
    curl_close($s);
    return $res;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“备”字加偏旁组词
有没有大圣传的同人小说
帮朋友在银行办的贷款,每月还钱,打了条子给
和田市玉盛建材有限公司地址有知道的么?有点
找到一份工作 五险一金 试用期半年 月薪2800
iphone用什么软件听flac格式音乐
电影怎么加载音频文件
寻找qq密码时怎么填写182********02
天福酸菜鱼在什么地方啊,我要过去处理事情
endnote x3的文献库怎么去重?
电炉和煤气可以一起用吗
判断,正比例那单元的,不要乱做,,把答案发
如家自选盒饭在哪里啊,我有事要去这个地方
欧洲火车通票为什么有的段之间需要提前预订预
手机里不能看电影看看是不是中病毒了
推荐资讯
卓尔悦好辞工吗
三井住友资产管理股份有限公司上海代表处地址
建行可以叫vip号的金卡怎么办理?
秦家房在哪里啊,我有事要去这个地方
360将军之路怎么升级快?
夏家桥这个地址在什么地方,我要处理点事
战舰霸主怎么提高战力 战力提升方法攻略
金钟安防工程有限公司在哪里啊,我有事要去这
鉴赏《闺怨》这首诗?
衣之恋时尚干洗地址有知道的么?有点事想过去
花椒山在哪里啊,我有事要去这个地方
鸿盛哈尔滨轴承在什么地方啊,我要过去处理事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?