ដាក់ប្រូកស៊ីរបស់ការងារ Guzzle នីមួយៗលើប្រតិបត្តិការអសមកាលដែលអាង (pool) ចាប់ផ្តើម។ នៅក្នុងការកំណត់អតិថិជនដែលមានស្រាប់ សូមប្រើរោងចក្រសន្យា៖

$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();

ការងារដែលបានផ្ទៀងផ្ទាត់នីមួយៗផ្តល់គោលដៅ និងប្រូកស៊ីមួយ។ សម្រាប់សំណើសាធារណៈដែលបានអនុញ្ញាត បេក្ខជន HTTP ពីបញ្ជីប្រូកស៊ី HTTP អាចផ្តល់ URL ប្រូកស៊ីដែលគ្មានព័ត៌មានសម្គាល់របស់ការងារនោះ។ ការជ្រើសរើសកើតឡើងមុនពេលរោងចក្ររបស់វាដំណើរការ។ សំណើ PSR-7 ពិពណ៌នាសារ HTTP ខណៈដែលជម្រើសបញ្ជូនទាំងនេះគ្រប់គ្រងការដឹកជញ្ជូន។ ការបោះពុម្ព ឬរក្សាទុកតម្លៃប្រូកស៊ីនៅក្បែរសារមិនអាចកំណត់ប្រតិបត្តិការដែលបញ្ជូនវាតាមវិធីផ្សេងបានទេ។

ត្រឡប់ requestAsync() ពីរោងចក្រ។ ការហៅ request() សមកាលនៅទីនោះអាចរារាំងខណៈដែលអាងកំពុងព្យាយាមចាប់ផ្តើមការងារស្របគ្នា។

បន្ថែម callback សម្រាប់លទ្ធផលបានសម្រេច និងបានបដិសេធ ដោយប្រើការគ្រប់គ្រងដែលមានស្រាប់របស់កម្មវិធី។ រក្សាកូនសោការងារ អត្តសញ្ញាណប្រូកស៊ីដែលបានជ្រើស និងលេខការប៉ុនប៉ងនៅក្នុងលទ្ធផលទាំងពីរ។ លំដាប់បញ្ចប់ខុសពីលំដាប់បញ្ចូល។ កុំជ្រើសចំណុចបញ្ចប់ផ្សេងដោយសម្ងាត់នៅក្នុងរោងចក្រ បន្ទាប់ពីបានកត់ត្រាមួយសម្រាប់ការងារ។

តម្លៃភាពស្របគ្នាកំណត់ការងាររបស់អាងនេះ។ ការងារជាច្រើនដែលជ្រើសប្រូកស៊ី ឬគណនីមួយដែលមានកំណត់ នៅតែអាចត្រូវការថវិកាដាច់ដោយឡែកសម្រាប់ចំណុចបញ្ចប់នោះ។

បកស្រាយលទ្ធផលតាមដំណាក់កាល៖ ការបដិសេធគោលដៅ ការផ្ទៀងផ្ទាត់ប្រូកស៊ី និងការផុតកំណត់ពេលតភ្ជាប់ គឺជាលទ្ធផលផ្សេងគ្នា។ ជម្រើសបញ្ជូនដែលរក្សាទុកជាមួយការងារបង្ហាញថាផ្លូវណាបានបង្កើតលទ្ធផលនីមួយៗ។

អត្ថបទពាក់ព័ន្ធ