Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet Swoole, um einen Multithread-Crawler zu implementieren

PHP verwendet Swoole, um einen Multithread-Crawler zu implementieren

藏色散人
藏色散人nach vorne
2020-01-16 14:12:273284Durchsuche

In swoole kann PHP seine Methode zum Starten von Unterprozessen verwenden, um mehrere PHP-Prozesse zu implementieren:

<?php
$s_time = time();
echo &#39;开始时间:&#39;.date(&#39;H:i:s&#39;,$s_time).PHP_EOL;
//进程数
$work_number=6;
 
//
$worker=[];
 
//模拟地址
$curl=[
    &#39;https://blog.csdn.net/feiwutudou&#39;,
    &#39;https://wiki.swoole.com/wiki/page/215.html&#39;,
    &#39;http://fanyi.baidu.com/?aldtype=16047#en/zh/manager&#39;,
    &#39;http://wanguo.net/Salecar/index.html&#39;,
    &#39;http://o.ngking.com/themes/mskin/login/login.jsp&#39;,
    &#39;https://blog.csdn.net/marksinoberg/article/details/77816991&#39;
];
 
//单线程模式
// foreach ($curl as $v) {
// echo curldeta($v);
// }
 
//创建进程
for ($i=0; $i < $work_number; $i++) {
    //创建多线程
    $pro=new swoole_process(function(swoole_process $work) use($i,$curl){
        //获取html文件
        $content=curldeta($curl[$i]);
        //写入管道
        $work->write($content.PHP_EOL);
    },true);
    $pro_id=$pro->start();
    $worker[$pro_id]=$pro;
}
//读取管道内容
foreach ($worker as $v) {
    echo $v->read().PHP_EOL;
}
 
//模拟爬虫
function curldeta($curl_arr)
{//file_get_contents
    echo $curl_arr.PHP_EOL;
    file_get_contents($curl_arr);
}
 
//进程回收
swoole_process::wait();
 
$e_time = time();
echo &#39;结束时间:&#39;.date(&#39;H:i:s&#39;,$e_time).PHP_EOL;
 
echo &#39;所用时间:&#39;.($e_time-$s_time).&#39;秒&#39;.PHP_EOL;
?>

Ergebnisse der Multi-Thread-Ausführung:

PHP verwendet Swoole, um einen Multithread-Crawler zu implementieren

Zum Vergleich die Single-Thread-Ergebnisse:

PHP verwendet Swoole, um einen Multithread-Crawler zu implementieren

Die Verbesserung ist sehr deutlich!

Weitere PHP-Kenntnisse finden Sie im PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonPHP verwendet Swoole, um einen Multithread-Crawler zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen