ပင့်ကူရေကန်သည်များစွာသောတောင့်တင်းသောတောင်းဆိုမှုများကိုစီမံခန့်ခွဲခြင်းအတွက်နည်းပညာဆိုင်ရာဖြေရှင်းနည်းဖြစ်သည်။ ၎င်းသည်လုပ်ငန်းခွင်စုံများ၏တစ်ပြိုင်နက်တည်းကွပ်မျက်မှုကိုအထောက်အကူပြုနိုင်ပြီးအကြောင်းအရာစုဆောင်းခြင်းနှင့် SEO optimization စသည့်ဖြစ်ရပ်များတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ PHP ပတ်ဝန်းကျင်တွင် ThinPPP နှင့် guzzzehttp တို့ကိုပေါင်းစပ်ခြင်းသည်ထိရောက်သောပင့်ကူရေကန်ကိုလျင်မြန်စွာတည်ဆောက်နိုင်သည်။
Perforphp Project ၏ application directory တွင် Spiderpool.php ဖိုင်ကိုဖန်တီးပြီးလိုအပ်သောမှီခိုသောစာကြည့်တိုက်များကိုမိတ်ဆက်ပါ။ အောက်ဖော်ပြပါသည်အခြေခံလူတန်းစားဖွဲ့စည်းပုံဖြစ်သည်။
namespace app\common;
use GuzzleHttp\Client;
use GuzzleHttp\Pool;
use GuzzleHttp\Psr7\Request;
class SpiderPool
{
protected $client;
protected $requests;
protected $concurrency;
public function __construct($concurrency = 5)
{
$this->client = new Client();
$this->requests = [];
$this->concurrency = $concurrency;
}
}
ADDREQUEST နည်းလမ်းကိုအဓိပ္ပါယ်ဖွင့်ခြင်းအားဖြင့် task pool သို့ task pool သို့တောင်းဆိုမှုလုပ်ငန်းများကိုပေါင်းထည့်သည်။
public function addRequest($url, $options = [])
{
$this->requests[] = new Request('GET', $url, $options);
}
ဤနည်းလမ်းသည်တောင်းဆိုမှုတစ်ခုစီကိုခေါ်ယူရန်တောင်းဆိုမှုများအတွက် တောင်းဆိုမှု တစ်ခုအနေဖြင့်တောင်းဆိုမှုတစ်ခုစီကို enapcape လုပ်သည်။
Run Method ကိုသတ်မှတ်ခြင်းအားဖြင့်တောင်းဆိုမှုလုပ်ငန်းများကိုတစ်ပြိုင်နက်တည်းကွပ်မျက်ခံရသည်။
public function run()
{
$pool = new Pool($this->client, $this->requests, [
'concurrency' => $this->concurrency,
'fulfilled' => function ($response, $index) {
// အောင်မြင်သောခေါ်ဆိုမှုအပြောင်းအလဲအတွက်ယုတ္တိဗေဒ
},
'rejected' => function ($reason, $index) {
// မအောင်မြင်သော callback processing ယုတ္တိဗေဒ
},
]);
$promise = $pool->promise();
$promise->wait();
}
အထက်ဖော်ပြပါကုဒ်သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းယန္တရားကိုအကောင်အထည်ဖော်ရန် Gozle ၏ ရေကူးကန် အတန်းကိုအသုံးပြုသည်။ အောင်မြင်သောသို့မဟုတ်ပျက်ကွက်သောတောင်းဆိုမှုများကိုကိုင်တွယ်ရန် callback function ကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။
အောက်ဖော်ပြပါအချက်သည် Spiderpool အတန်းအစားသို့ခေါ်ဆိုမှုတစ်ခုဖြစ်သည်။
use app\common\SpiderPool;
$spiderPool = new SpiderPool();
$spiderPool->addRequest('http://www.example.com/page1');
$spiderPool->addRequest('http://www.example.com/page2');
$spiderPool->addRequest('http://www.example.com/page3');
$spiderPool->run();
အထက်ပါနည်းလမ်းများမှတဆင့်ကျွန်ုပ်တို့သည်တစ်ပြိုင်နက်တည်းတွင်တွား 0 င်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းပြောင်းလွယ်ပြင်လွယ်စွာလုပ်ဆောင်နိုင်ပြီးသိသိသာသာတိုးတက်မှုကိုတိုးတက်စေသည်။
guideshttp နှင့် The TearchPP မူဘောင်ကိုအားကောင်းသည့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုနှင့်အတူကျွန်ုပ်တို့သည်အရွယ်အစားကြီးမားသောပင့်ကူရေကန်စနစ်ကိုထိရောက်စွာတည်ဆောက်နိုင်သည်။ အမှန်တကယ်လိုအပ်ချက်များအရစနစ်၏တည်ငြိမ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုပြန်လည်ပြုပြင်ခြင်း, သစ်ထုတ်လုပ်ခြင်း, ခြွင်းချက်ကိုင်တွယ်ခြင်းစသည်တို့ကိုပြန်လည်ရယူခြင်း, သစ်ထုတ်လုပ်ခြင်း, ခြွင်းချက်ကိုင်တွယ်ခြင်းစသည်တို့ကိုတိုးချဲ့ရန်,