>  기사  >  백엔드 개발  >  PHP는 swoole을 사용하여 다중 스레드 크롤러를 구현합니다.

PHP는 swoole을 사용하여 다중 스레드 크롤러를 구현합니다.

藏色散人
藏色散人앞으로
2020-01-16 14:12:273193검색

Swoole에서 PHP는 하위 프로세스를 시작하는 방법을 사용하여 PHP 다중 프로세스를 실현할 수 있습니다.

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

멀티 스레드 실행 결과:

PHP는 swoole을 사용하여 다중 스레드 크롤러를 구현합니다.

비교하면 단일 스레드 결과:

PHP는 swoole을 사용하여 다중 스레드 크롤러를 구현합니다.

The 개선은 매우 분명합니다!

PHP 관련 지식을 더 보려면 PHP 튜토리얼을 방문하세요!

위 내용은 PHP는 swoole을 사용하여 다중 스레드 크롤러를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제