亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP多線程之內部多線程實例分析

2024-05-04 23:32:07
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP多線程之內部多線程,實例分析了php多線程的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例分析了PHP多線程之內部多線程用法。分享給大家供大家參考。具體如下:

 

復制代碼代碼如下:
<?php
class Http_MultiRequest
{
    //要并行抓取的url 列表
    private $urls = array();
    //curl 的選項
    private $options;
    //構造函數
    function __construct($options = array())
    {
        $this->setOptions($options);
    }
    //設置url 列表
    function setUrls($urls)
    {
        $this->urls = $urls;
        return $this;
    }
    //設置選項
    function setOptions($options)
    {
        $options[CURLOPT_RETURNTRANSFER] = 1;
        if (isset($options['HTTP_POST'])) 
        {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $options['HTTP_POST']);
            unset($options['HTTP_POST']);
        }
        if (!isset($options[CURLOPT_USERAGENT])) 
        {
            $options[CURLOPT_USERAGENT] = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)';
        }
        if (!isset($options[CURLOPT_FOLLOWLOCATION])) 
        {
            $options[CURLOPT_FOLLOWLOCATION] = 1;
        }
        if (!isset($options[CURLOPT_HEADER]))
        {
            $options[CURLOPT_HEADER] = 0;
        }
        $this->options = $options;
    }
    //并行抓取所有的內容
    function exec()
    {
        if(empty($this->urls) || !is_array($this->urls))
        {
            return false;
        }
        $curl = $data = array();
        $mh = curl_multi_init();
        foreach($this->urls as $k => $v)
        {
            $curl[$k] = $this->addHandle($mh, $v);
        }
        $this->execMulitHandle($mh);
        foreach($this->urls as $k => $v)
        {
            $data[$k] = curl_multi_getcontent($curl[$k]);
            curl_multi_remove_handle($mh, $curl[$k]);
        }
        curl_multi_close($mh);
        return $data;
    }
    //只抓取一個網頁的內容。
    function execOne($url)
    {
        if (empty($url)) {
            return false;
        }
        $ch = curl_init($url);
        $this->setOneOption($ch);
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
    //內部函數,設置某個handle 的選項
    private function setOneOption($ch)
    {
        curl_setopt_array($ch, $this->options);
    }
    //添加一個新的并行抓取 handle
    private function addHandle($mh, $url)
    {
        $ch = curl_init($url);
        $this->setOneOption($ch);
        curl_multi_add_handle($mh, $ch);
        return $ch;
    }
    //并行執行(這樣的寫法是一個常見的錯誤,我這里還是采用這樣的寫法,這個寫法
    //下載一個小文件都可能導致cup占用100%, 并且,這個循環會運行10萬次以上
    //這是一個典型的不懂原理產生的錯誤。這個錯誤在PHP官方的文檔上都相當的常見。)
    private function execMulitHandle($mh)
    {
        $running = null;
        do {
            curl_multi_exec($mh, $running);
        } while ($running > 0);
    }
}
/*下面是上面的類的一個測試的例子:*/
$urls = array("http://baidu.com", "http://baidu.com", "http://baidu.com", "http://baidu.com", "http://baidu.com", "http://baidu.com", "http://www.google.com", "http://www.sina.com.cn", );
$m = new Http_MultiRequest();
$t = microtime(true);
$m->setUrls($urls);
//parallel fetch(并行抓?。?
$data = $m->exec();
$parallel_time = microtime(true) - $t;
echo $parallel_time . "/n";
$t = microtime(true);
//serial fetch(串行抓取):
foreach ($urls as $url)
{
    $data[] = $m->execOne($url);
}
$serial_time = microtime(true) - $t;
echo $serial_time . "/n";

 

希望本文所述對大家的php程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲日韩成人av| 亚洲aⅴ男人的天堂在线观看| 精品亚洲va在线va天堂资源站| 国产suv精品一区二区| 亚洲最新av在线网站| 国产91精品青草社区| 国产精品丝袜久久久久久不卡| 欧美视频在线免费看| 久久久国产一区| 欧美日韩国产123| 在线观看免费高清视频97| 91精品国产91久久久久久不卡| 欧美激情一级精品国产| 亚洲电影免费在线观看| 亚洲人a成www在线影院| 亚洲欧美日韩综合| 亚洲欧美激情视频| 日韩有码视频在线| 亚洲欧美日韩图片| 日韩欧美中文第一页| 日韩高清中文字幕| 欧美一级视频在线观看| 亚洲欧美精品一区| 亚洲天天在线日亚洲洲精| 欧美性高潮在线| 一本大道香蕉久在线播放29| 欧美黑人国产人伦爽爽爽| 国产精品久久91| 欧美成人在线网站| 成人黄色影片在线| 亚洲日本欧美中文幕| 日韩国产欧美精品一区二区三区| 亚洲国产精品人人爽夜夜爽| 黑人巨大精品欧美一区免费视频| 国产午夜精品视频免费不卡69堂| 国产精品网站入口| 亚洲色图综合久久| 国产精品第10页| 国产精品偷伦免费视频观看的| 国产视频自拍一区| 中文字幕在线国产精品| 高清日韩电视剧大全免费播放在线观看| 国产精品a久久久久久| 国产亚洲欧洲高清一区| 欧美日韩不卡合集视频| 欧美大片网站在线观看| 亚洲欧洲高清在线| 裸体女人亚洲精品一区| 热久久免费视频精品| 成人xvideos免费视频| 亚洲xxx自由成熟| 91在线高清免费观看| 久久精品人人做人人爽| 欧美极度另类性三渗透| 国产精品1区2区在线观看| 一区二区三区精品99久久| 中文字幕亚洲欧美| 欧美国产日产韩国视频| 日韩精品999| 亚洲日本成人女熟在线观看| 国产精品精品久久久| 久久久久久久一区二区| 欧美整片在线观看| 国产成人av网址| 日韩欧美在线观看视频| 国产精品自拍网| 欧美色图在线视频| 亚洲乱码一区二区| 国产精品激情av在线播放| 欧美乱大交xxxxx| 视频在线观看一区二区| 亚洲成人免费在线视频| 日本三级久久久| 国产免费一区二区三区在线观看| 国产精品国产三级国产aⅴ浪潮| 久久国产精品影视| 精品日本美女福利在线观看| 欧美日韩亚洲高清| 欧美成人精品在线视频| 一区二区三区四区精品| 日韩国产欧美精品一区二区三区| 欧美精品免费在线观看| 国产精品视频xxx| 久久久久中文字幕| 最近2019年手机中文字幕| 日韩hd视频在线观看| 成人激情春色网| 91精品免费久久久久久久久| 欧美最猛性xxxxx(亚洲精品)| 欧美在线免费看| 91久久精品日日躁夜夜躁国产| 91精品国产高清自在线看超| 一区二区三区视频观看| 国产精品一区二区3区| 成人精品久久一区二区三区| 538国产精品视频一区二区| 国产精品高潮呻吟久久av无限| 亚洲精品在线观看www| 国产97在线|亚洲| 搡老女人一区二区三区视频tv| 成人动漫网站在线观看| 久久精品91久久久久久再现| 日本亚洲欧洲色α| 亚洲精品自拍偷拍| 国产99久久精品一区二区永久免费| 日韩精品中文在线观看| 国产精品久久久久久久久免费| 国产成人欧美在线观看| 久久久爽爽爽美女图片| 91av视频在线观看| 色妞色视频一区二区三区四区| 国产视频精品va久久久久久| 久色乳综合思思在线视频| 国语自产精品视频在线看| 日韩在线高清视频| 午夜欧美大片免费观看| 九九久久综合网站| 国产色婷婷国产综合在线理论片a| 成人黄色午夜影院| 精品一区二区三区四区在线| 欧美精品免费播放| 日韩亚洲国产中文字幕| 午夜剧场成人观在线视频免费观看| 午夜精品免费视频| 高清亚洲成在人网站天堂| 国产精品成熟老女人| 清纯唯美亚洲综合| 久久精品夜夜夜夜夜久久| 久久99热这里只有精品国产| 欧美日韩福利电影| 不卡av日日日| 91系列在线播放| 国产精品亚洲网站| 亚洲男人的天堂在线| 69影院欧美专区视频| 最近2019中文免费高清视频观看www99| 性视频1819p久久| 国产亚洲aⅴaaaaaa毛片| 国产一区红桃视频| 亚洲精品自在久久| 国产aⅴ夜夜欢一区二区三区| 欧美精品午夜视频| 永久免费看mv网站入口亚洲| 国产香蕉一区二区三区在线视频| 国产精品视频大全| 欧美孕妇毛茸茸xxxx| 搡老女人一区二区三区视频tv| 成人激情电影一区二区| 国产一区二区视频在线观看| 1769国内精品视频在线播放| 亚洲热线99精品视频| 91精品国产99久久久久久| 成人性生交大片免费看视频直播| 亚洲国产欧美一区二区三区同亚洲| 粉嫩av一区二区三区免费野| 亚洲欧美综合精品久久成人| 日本三级久久久| 亚洲国产小视频| 欧美精品在线网站| 97精品在线视频| 欧美精品激情在线观看| 精品国产区一区二区三区在线观看| 三级精品视频久久久久| 亚洲男人天堂九九视频|