【问题标题】:curl connection reuse in phpphp中的curl连接重用
【发布时间】:2013-11-15 10:25:38
【问题描述】:

我在我的 php 应用程序中使用 curl。看起来像这样(简化):

$handle = curl_init();
curl_exec($handle);
curl_close($handle);

正如Persistence Is The Way to Happiness 章节中所写,

对同一主机使用相同的简单句柄的后续请求可能只是能够使用已经打开的连接!这大大减少了网络影响。

那么,它适用于这段代码吗?是否会保存连接并curl_init() 使用现有连接?如果是 - 它们存储了多长时间?

【问题讨论】:

    标签: php curl


    【解决方案1】:

    我自己没有测试过,但我认为它应该是这样工作的:

    你创建一个 curl 实例:

    $handle = curl_init();
    

    然后您设置您的选项,例如 URL、方法(post 或 get)和查询字符串:

    curl_setopt($handle, CURLOPT_URL, "http://stackoverflow.com");
    

    执行请求:

    curl_exec($handle); // execute the request
    

    更改您的选项,例如更改 URL:

    curl_setopt($handle, CURLOPT_URL, "http://stackoverflow.com/test/");
    

    再次执行请求,应该可以重用已经打开的连接:

    curl_exec($handle);
    

    您可以使用同一个 curl 实例多次执行此操作,并且如果可能,它将重用连接。

    最后关闭连接并在完成后删除 curl 实例:

    curl_close($handle);
    

    【讨论】:

    • 在几天内以这种方式发出数百万个请求后,我的 PHP 5.6.14 冻结在 curl_exec 上(由日志和 dbg 回溯确认)。不确定是否是因为连接重用。
    猜你喜欢
    • 2015-08-14
    • 2015-07-24
    • 1970-01-01
    • 2015-02-13
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多