လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> [PretherPPP တွင်ထိရောက်သောပင့်ကူရေကန်များကိုအကောင်အထည်ဖော်ရန်လက်တွေ့ကျသင်ခန်းစာ]

[PretherPPP တွင်ထိရောက်သောပင့်ကူရေကန်များကိုအကောင်အထည်ဖော်ရန်လက်တွေ့ကျသင်ခန်းစာ]

gitbox 2025-06-24

ပင့်ကူရေကန်ကဘာလဲ?

ပင့်ကူရေကန်သည်များစွာသောတောင့်တင်းသောတောင်းဆိုမှုများကိုစီမံခန့်ခွဲခြင်းအတွက်နည်းပညာဆိုင်ရာဖြေရှင်းနည်းဖြစ်သည်။ ၎င်းသည်လုပ်ငန်းခွင်စုံများ၏တစ်ပြိုင်နက်တည်းကွပ်မျက်မှုကိုအထောက်အကူပြုနိုင်ပြီးအကြောင်းအရာစုဆောင်းခြင်းနှင့် SEO optimization စသည့်ဖြစ်ရပ်များတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ PHP ပတ်ဝန်းကျင်တွင် ThinPPP နှင့် guzzzehttp တို့ကိုပေါင်းစပ်ခြင်းသည်ထိရောက်သောပင့်ကူရေကန်ကိုလျင်မြန်စွာတည်ဆောက်နိုင်သည်။

အဆင့် 1: Spiderpool အတန်းကိုဖန်တီးပါ

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;
    }
}

အဆင့် 2: တောင်းဆိုမှုကိုအလုပ်တစ်ခုထည့်ပါ

ADDREQUEST နည်းလမ်းကိုအဓိပ္ပါယ်ဖွင့်ခြင်းအားဖြင့် task pool သို့ task pool သို့တောင်းဆိုမှုလုပ်ငန်းများကိုပေါင်းထည့်သည်။

 public function addRequest($url, $options = [])
{
    $this->requests[] = new Request('GET', $url, $options);
}

ဤနည်းလမ်းသည်တောင်းဆိုမှုတစ်ခုစီကိုခေါ်ယူရန်တောင်းဆိုမှုများအတွက် တောင်းဆိုမှု တစ်ခုအနေဖြင့်တောင်းဆိုမှုတစ်ခုစီကို enapcape လုပ်သည်။

အဆင့် 3: Task Pool တွင်တောင်းဆိုမှုများကို Execute လုပ်ပါ

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 ကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။

အဆင့် 4: ဥပမာအသုံးပြုမှုနည်းလမ်း

အောက်ဖော်ပြပါအချက်သည် 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 မူဘောင်ကိုအားကောင်းသည့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုနှင့်အတူကျွန်ုပ်တို့သည်အရွယ်အစားကြီးမားသောပင့်ကူရေကန်စနစ်ကိုထိရောက်စွာတည်ဆောက်နိုင်သည်။ အမှန်တကယ်လိုအပ်ချက်များအရစနစ်၏တည်ငြိမ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုပြန်လည်ပြုပြင်ခြင်း, သစ်ထုတ်လုပ်ခြင်း, ခြွင်းချက်ကိုင်တွယ်ခြင်းစသည်တို့ကိုပြန်လည်ရယူခြင်း, သစ်ထုတ်လုပ်ခြင်း, ခြွင်းချက်ကိုင်တွယ်ခြင်းစသည်တို့ကိုတိုးချဲ့ရန်,