久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      看看PHP 多進(jìn)程處理任務(wù)

      看看PHP 多進(jìn)程處理任務(wù)

      pcntl 模塊(非 Unix 類(lèi)系統(tǒng)不支持此模塊)

      一個(gè) PHP 多進(jìn)程簡(jiǎn)單例子大概是這個(gè)樣子:

      // 5 個(gè)子進(jìn)程處理任務(wù)for ($i = 0; $i < 5; $i++) {     $pid = pcntl_fork();    if ($pid == -1) {        die("could not fork");     } elseif ($pid) {        echo "I'm the Parent $in";     } else { // 子進(jìn)程處理         echo "I'm the Child $in";        // 業(yè)務(wù)處理         exit($i); // 一定要注意退出子進(jìn)程,否則 pcntl_fork() 會(huì)被子進(jìn)程再 fork,帶來(lái)處理上的影響。     } }// 等待子進(jìn)程執(zhí)行結(jié)束while (pcntl_waitpid(0, $status) != -1) {     $status = pcntl_wexitstatus($status);    echo "Child $status completedn"; }復(fù)制代碼

      當(dāng)然實(shí)際應(yīng)用中我們不能夠這樣輸出代碼,不夠健壯,也不夠優(yōu)雅,我所以找了個(gè)基于 pcntl 封裝的擴(kuò)展包來(lái)使用。

      spatie/async – 基于 pcntl 封裝的擴(kuò)展包

      以下是我使用 spatie/async 來(lái)優(yōu)化一個(gè)多進(jìn)程請(qǐng)求的例子

      原代碼(耗時(shí) 20s 左右)- github.com/guanguans/m…

      看看PHP 多進(jìn)程處理任務(wù)

      /**  * @param string $keyword  *  * @return array  */public function searchAll(string $keyword): array{     $songAll = [];    foreach ($this->platforms as $platform) {         $songAll = array_merge($songAll, $this->search($platform, $keyword));     }    return $songAll; }/**  * @param string $platform  * @param string $keyword  *  * @return mixed  */public function search(string $platform, string $keyword){     $meting = $this->getMeting($platform);      $songs = json_decode($meting->format()->search($keyword), true);    foreach ($songs as $key => &$song) {         $detail = json_decode($meting->format()->url($song['url_id']), true);        if (empty($detail['url'])) {            unset($songs[$key]);         }         $song = array_merge($song, $detail);     }    unset($song);    return $songs; }復(fù)制代碼

      改進(jìn)后(耗時(shí) 4s 左右)- github.com/guanguans/m…

      看看PHP 多進(jìn)程處理任務(wù)

      /**  * @param string $keyword  *  * @return array  */public function searchAll(string $keyword): array{     $songAll = [];     $pool = Pool::create();    foreach ($this->platforms as $platform) {         $pool->add(function () use ($platform, $keyword) {            return $this->search($platform, $keyword);         }, $this->getSerializedOutput())->then(function ($output) use (&$songAll) {             $songAll = array_merge($songAll, $output);         })->catch(function (Throwable $exception) {            exit($exception->getMessage());         });     }     $pool->wait();    return $songAll; }/**  * @return mixed  */public function search(string $platform, string $keyword){     $meting = $this->getMeting($platform);     $songs = json_decode($meting->format()->search($keyword), true);      $pool = Pool::create();    foreach ($songs as $key => &$song) {         $pool->add(function () use ($meting, $song) {            return json_decode($meting->format()->url($song['url_id']), true);         })->then(function ($output) use (&$songs, &$song, $key) {             $song = array_merge($song, $output);            if (empty($song['url'])) {                unset($songs[$key]);             }         })->catch(function (Throwable $exception) {            exit($exception->getMessage());         });     }    unset($song);     $pool->wait();    return $songs; }復(fù)制代碼

      想了解

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)