【问题标题】:How to diagnose long-running PHP curl requests如何诊断长时间运行的 PHP curl 请求
【发布时间】:2015-03-25 17:42:56
【问题描述】:

我们的 PHP Web 应用程序向 API 发出一系列 curl 请求以响应某些请求。我们正在调试一个问题,即请求偶尔会在 30 秒后超时并显示 503 响应代码...我们很确定这是因为一个(或两个)curl 请求花费的时间太长。

为了诊断出问题所在的 curl 请求,我们希望记录或跟踪各个请求。我们将应用程序托管在带有 Logentries 附加组件的 Heroku Cedar 实例上,我们也使用 New Relic,但是这两种工具似乎都没有提供记录/跟踪个人 curls 的选项。我们如何做到这一点?

我知道我们可以设置带有时间戳的变量并手动记录它们……但怀疑我们会“重新发明轮子”。最好的方法是什么,最好不要弄乱我们的代码库。

【问题讨论】:

    标签: php apache curl logging heroku


    【解决方案1】:

    您将需要 xdebug 和代码修改来诊断它。我想您不必对代码进行太多更改,而是设置

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);  //set it to 0 for infinity
    curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds, increase that 
    

    也别忘了放大php脚本自身的执行时间:

    `set_time_limit(0);//` to infinity for example
    

    【讨论】:

    • xdebug 因素在你上面的例子中是什么?你能详细说明一下吗?
    • 如果你决定使用 xdebug 来诊断 curl。例如在 curl 你可以设置 curl_setopt ($ch, CURLOPT_COOKIE, 'XDEBUG_SESSION=1');
    • 重读您的答案...您能解释一下这两个curl_setopts 的用途/原因吗?他们是为了修复连接超时吗?还是出于调试目的?我不希望增加容差以允许缓慢的请求。相反,我想确定哪些调用正在减慢一切(并可能删除它们)。这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 2011-05-28
    • 2010-10-01
    • 1970-01-01
    • 2011-01-12
    • 2012-02-16
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多