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

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

藏色散人
풀어 주다: 2023-04-08 08:34:01
앞으로
3404명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿