永发信息网

php如何使用CURL复用连接

答案:1  悬赏:0  手机版
解决时间 2021-01-08 03:26
php如何使用CURL复用连接
最佳答案
HTTP1.0与HTTP1.1的一个很大的差别是HTTP1.1支持长连接。现实中有很多这个场景,就是请求了一个页面,然后这个页面的其他内容,例如CSS文件,JS文件都要从同一个服务(相同服务器,相同端口)上面获取。这些向相同服务器的请求如果能够复用连接,是很有利于提供网络性能。 
    总的来说,复用HTTP连接有两个好处: 
   1. 节省系统端口资源(每一次连接都要使用端口,端口的资源是有限的) 
   2. 节省创建socket连接的时间。 
    
    下面讲讲在PHP下面,如何使用CURL来复用连接: 
    curl是在一个handle里面复用连接的,所以这样就可以复用连接了: 
    $ch = curl_init(); 
    $ret = curl_exec($ch); 
    ...... 
    $ret2 = curl_exec($ch); 
    .... 
    curl_close($ch); 
    在初始化跟关闭$ch资源时即可复用连接。 
    
    我这里写了两个函数,可以支持GET跟POST的请求,大家感兴趣可以看看。 
 
function curl_get($url, $timeout=5) {
    global $g_handle;
    if (empty($g_handle)) $ch = curl_init();

    $options = array(
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FRESH_CONNECT  => false,
        CURLOPT_FORBID_REUSE   => false,
        CURLOPT_TIMEOUT        => $timeout
    );
    curl_setopt_array($g_handle, $options);

    $ret = curl_exec($g_handle);
    return $ret;
}


// 可以支持POST数据,$post是一个数组,$timeout是超时时间。 
function curl_post($url, $post=array(), $timeout=10) {
    global $g_handle;
    if (empty($g_handle)) $g_handle = curl_init();

    $options = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FRESH_CONNECT => false,
        CURLOPT_FORBID_REUSE => false,
        CURLOPT_TIMEOUT => $timeout,
        CURLOPT_POSTFIELDS => http_build_query($post)
    );
    if (empty($post)) $options[CURLOPT_POST] = false;

    curl_setopt_array($g_handle, $options);

    $ret = curl_exec($g_handle);
    return $ret;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2016考研国家入取分数线是多少
慧通电脑科技地址在哪,我要去那里办事,
谁有李小龙动态图片
栾城道口到石家庄北站怎么走
2016年1月17号15点38分出生命里缺什么
春节的"文化内涵"
估算273÷4
DNF最近狂战士是不是可以带光剑了?怎么获取
鹏华国防基金以前每天都有当盘中估值,现在怎
迁徙的分类
我用深度快速装机版装机。不知道怎么的电脑开
潍坊市五路车离泰华最近的一站
去望王山春游作文600个字
外开窗和内开窗指怎么开,内平开带上悬是什么
想知道: 宜春市 宜春五金家居建材国际商贸城
推荐资讯
12000除以125简便方法是
东海花园君豪阁怎么样?好不好?值不值得买?
古代攻城战,有没有采用推土法破城的
夫妻分开男方买车需要女方承担吗?
新安镇的乡镇简介
我好想找个能说说心里话的人,想在这找个好闺
间厅柜双面开门是指两面同时可以开吗
5/12×50+51分51×7/12减怎么简便
炉子倒烟。
7.2*24+15*2.8+9*2.8的简便计算是什么,谢谢
明朝时人口最多是多少
国家机关工作人员死亡后如何计发一次抚恤金?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?