Guzzle Pool: ສົ່ງ proxy ຂອງແຕ່ລະວຽກໄປຫາ requestAsync
ຕິດທາງເລືອກ proxy ໃສ່ທຸກການດຳເນີນການແບບ async ແທນທີ່ຈະໃສ່ຂໍ້ຄວາມຄຳຮ້ອງ PSR-7 ຫຼື factory ທີ່ສະກັດກັ້ນ.
ໃສ່ proxy ຂອງແຕ່ລະວຽກ Guzzle ໃສ່ການດຳເນີນການແບບ async ທີ່ pool ເລີ່ມ. ພາຍໃນການຕັ້ງຄ່າ client ທີ່ມີຢູ່ແລ້ວ, ໃຊ້ factory ສັນຍາ:
$operations = function () use ($client, $jobs) {
foreach ($jobs as $id => $job) {
yield $id => function () use ($client, $job) {
return $client->requestAsync('GET', $job['url'], [
'proxy' => $job['proxy'],
'timeout' => 20,
]);
};
}
};
$pool = new GuzzleHttp\Pool($client, $operations(), [
'concurrency' => 4,
]);
$pool->promise()->wait();
ແຕ່ລະວຽກທີ່ຜ່ານການກວດສອບໃຫ້ຈຸດໝາຍປາຍທາງ ແລະ proxy ໜຶ່ງອັນ. ສຳລັບຄຳຮ້ອງສາທາລະນະທີ່ໄດ້ຮັບອະນຸຍາດ, ຜູ້ສະໝັກ HTTP ຈາກລາຍຊື່ proxy HTTP ສາມາດໃຫ້ URL proxy ທີ່ບໍ່ມີຂໍ້ມູນຢືນຢັນຂອງວຽກນັ້ນ; ການເລືອກເກີດຂຶ້ນກ່ອນ factory ຂອງມັນເຮັດວຽກ. ຄຳຮ້ອງ PSR-7 ອະທິບາຍຂໍ້ຄວາມ HTTP, ໃນຂະນະທີ່ທາງເລືອກການສົ່ງເຫຼົ່ານີ້ຄວບຄຸມການຂົນສົ່ງ. ການພິມ ຫຼື ເກັບຄ່າ proxy ໄວ້ຂ້າງຂໍ້ຄວາມບໍ່ສາມາດຕັ້ງຄ່າການດຳເນີນການທີ່ສົ່ງມັນໃນທາງອື່ນໄດ້.
ສົ່ງຄືນ requestAsync() ຈາກ factory. ການເອີ້ນ request() ແບບ sync ຢູ່ນັ້ນອາດສະກັດກັ້ນໃນຂະນະທີ່ pool ພະຍາຍາມເລີ່ມວຽກພ້ອມກັນ.
ເພີ່ມ callback ສຳລັບຜົນທີ່ສຳເລັດ ແລະ ຖືກປະຕິເສດໂດຍໃຊ້ການຈັດການທີ່ມີຢູ່ຂອງແອັບ. ເກັບກຸນແຈວຽກ, ຕົວລະບຸ proxy ທີ່ເລືອກ ແລະ ໝາຍເລກຄັ້ງລອງໄວ້ໃນທັງສອງຜົນ; ລຳດັບການສຳເລັດແຕກຕ່າງຈາກລຳດັບການປ້ອນ. ຢ່າເລືອກຈຸດສຸດທ້າຍອື່ນໃນ factory ຢ່າງລັບໆ ຫຼັງຈາກບັນທຶກໜຶ່ງສຳລັບວຽກແລ້ວ.
ຄ່າ concurrency ຈຳກັດວຽກຂອງ pool ນີ້. ຫຼາຍວຽກທີ່ເລືອກ proxy ຫຼື ບັນຊີດຽວທີ່ຈຳກັດອາດຍັງຕ້ອງການງົບປະມານແຍກສຳລັບຈຸດສຸດທ້າຍນັ້ນ.
ຕີຄວາມຜົນຕາມຂັ້ນຕອນ: ການປະຕິເສດຈຸດໝາຍປາຍທາງ, ການຢືນຢັນ proxy ແລະ ການໝົດເວລາການເຊື່ອມຕໍ່ແມ່ນຜົນທີ່ແຕກຕ່າງກັນ. ທາງເລືອກການສົ່ງທີ່ເກັບໄວ້ກັບວຽກສະແດງໃຫ້ເຫັນວ່າເສັ້ນທາງໃດໃຫ້ແຕ່ລະຜົນ.