หากคำขอแบบอะซิงโครนัสหมดเวลาก่อนเปิดการเชื่อมต่อ ให้ตรวจสอบขีดจำกัดที่ใช้งานอยู่ของตัวขนส่งรวมถึงเวลาหมดเวลาของเครือข่าย libcurl จะจัดคิวการถ่ายโอนเมื่อขีดจำกัดเหล่านั้นเต็ม และงบเวลาหมดเวลายังคงเดินต่อขณะอยู่ในคิว

สำหรับ cURL multi handler ที่ใช้ร่วมกันของ Guzzle 7:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlMultiHandler;

$multi = new CurlMultiHandler([
    'options' => [
        CURLMOPT_MAX_TOTAL_CONNECTIONS => 24,
        CURLMOPT_MAX_HOST_CONNECTIONS => 4,
    ],
]);
$client = new Client([
    'handler' => HandlerStack::create($multi),
]);

ใช้ไคลเอนต์นี้สำหรับงานอะซิงโครนัสและระบุตัวเลือกพร็อกซีที่ต้องการในการดำเนินการ ค่าเหล่านี้เป็นงบประมาณตัวอย่าง สำหรับคำขอสาธารณะที่ได้รับอนุญาตผ่านตัวกลางสาธารณะ รายการพร็อกซี HTTP มีผู้สมัครสำหรับ URL พร็อกซีของการดำเนินการ

ตัวเลือกงบประมาณ
MAX_TOTAL_CONNECTIONSการเชื่อมต่อที่เปิดพร้อมกันภายใต้ multi handler
MAX_HOST_CONNECTIONSการเชื่อมต่อไปยังโฮสต์/พอร์ตเดียว การเชื่อมต่อพร็อกซีจะนับกับปลายทางพร็อกซี
MAXCONNECTSการเชื่อมต่อที่เก็บไว้ในแคชหลังการใช้งาน

เว็บไซต์หลายแห่งที่ใช้พร็อกซีเดียวกันไม่ได้รับโควตาการเชื่อมต่อพร็อกซีแยกกันโดยอัตโนมัติ ความจุของแคชที่ไม่ได้ใช้งานไม่ได้เปิดการเชื่อมต่อล่วงหน้าและไม่ได้ทำให้สลับกันได้: การใช้ซ้ำขึ้นอยู่กับเส้นทาง ปลายทาง โปรโตคอล และการรับรองความถูกต้อง

รักษางบงานของแอปพลิเคชันและโควตาของผู้ให้บริการให้สอดคล้องกับงบการขนส่งเหล่านี้ ระบบนับการเชื่อมต่อ ไม่ใช่คำขอต่อวินาที การเพิ่มเวลาหมดเวลาของซ็อกเก็ตไม่สามารถระบุได้ว่าคิวหรือการรอเครือข่ายใช้เวลาไป

บทความที่เกี่ยวข้อง