簡體   English   中英

http post in loop 正在運行超時

[英]http post in loop is running timing out

我正在嘗試將 curl 請求從源循環發送到目標。 循環運行 2 次。 第一個請求持續 32 秒,第二個請求持續 50 秒。 終於超時了。 控制超時不在我的控制范圍內,因為它是共享主機。

下面的源代碼部分正在瀏覽器中運行。 用完 120 秒后顯示以下錯誤消息

錯誤詳細信息:致命錯誤:超過 120 秒的最大執行時間

問題我假設請求不應超時,因為這兩個請求都是通過它們自己的 curl 請求分別提交的。 盡管如此,它似乎正在合並以形成總共一個請求。

如果我運行循環一次,那么一切正常,因為它需要 30 秒。

我錯過了什么嗎?

資源

for($i = 0; $i <= 200; $i+= 100) {
    $postData = array(
        'start' => $i,
        'end' => $i + 100
    );

    $ch = curl_init('Server url');
    curl_setopt_array($ch, array(
        CURLOPT_POST => TRUE,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json'
        ),
        CURLOPT_POSTFIELDS => json_encode($postData)
    ));
    
    $response = curl_exec($ch);
    $responseData = json_decode($response, TRUE);
    curl_close($ch);
    
    echo $response;
}

目的地

public function methodname()
{
    $json = json_decode(file_get_contents('php://input'), true);
    // .
    // .
    // Logic that runs for 32 seconds
    // .
    // . 
    header('Content-type: application/json');
    echo json_encode("message");
}

嘗試使用 cURl 的 CURLOPT_TIMEOUT 或類似配置。 更多信息https://www.php.net/manual/en/function.curl-setopt.php在這里

答:閱讀文檔

嘗試在循環中添加sleep(1) function 。 可能是您被請求的服務器在短時間內不喜歡多個 POST 請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM