동시에 여러 작업 실행
순차적으로 실행되는 작업을 병렬 실행으로 변환(작업은 논리적으로 병렬로 실행될 수 있음)
예를 들어 알려진 사용자 데이터를 판단해야 합니다. 이메일과 문자 메시지를 보내야 합니다. 그렇다면 보내세요.
다중 프로세스를 사용하지 않는 경우 먼저 이메일을 보낼지 여부를 결정하고 필요한 경우 보낸 다음 문자 메시지를 보낼지 여부를 결정하고 필요한 경우 보냅니다. 이메일을 보내는 데 2초, 문자 메시지를 보내는 데 2초가 걸린다면 우리가 작업을 완료하는 데는 약 4초가 걸립니다.
멀티스레딩을 사용하면 이메일 처리용 스레드와 문자 메시지 처리용 스레드를 모두 열 수 있으며, 처리 시간은 절반으로 줄어듭니다. 무료 가지고 있다 컬을 통해 웹 콘텐츠를 크롤링해야 합니다. 10개의 웹 페이지를 크롤링해야 합니다. URL 주소는 배열을 통해 읽어야 합니다. for 루프를 통해 이 10개의 웹 페이지를 크롤링하는 경우 다중 프로세스를 사용하여 작업을 5개 부분으로 나누고 각 프로세스가 2개의 URL을 가져와 동시에 실행할 수 있습니다. 총 4초가 소요되며 효율이 5배 증가됩니다.
<?php/** * Created by PhpStorm. * User: zhezhao * Date: 2016/10/20 * Time: 10:37 */$info = array( "sendmail"=>1, "mailto"=>"12345@qq.com", "sendsms"=>1, "smsto"=>"123456");echo "start:".date("Y-m-d H:i:s").PHP_EOL;$mail_process = new swoole_process('sendMail',true);$mail_process->start();$sms_process = new swoole_process('sendSMS',true);$sms_process->start();//主进程输出子进程范围内容echo $mail_process->read();echo PHP_EOL;echo $sms_process->read();echo PHP_EOL;echo "end:".date("Y-m-d H:i:s").PHP_EOL;//并行函数function sendMail(swoole_process $worker){ global $info; if($info['sendmail']==1){ sleep(2); $worker->write("send mail to ".$info['mailto']); } }function sendSMS(swoole_process $worker){ global $info; if($info['sendmail']==1){ sleep(2); $worker->write("send sms to ".$info['smsto']); } }
위의 두 상황은 효율성을 높이기 위해 논리적 순서가 없는 작업을 동시에 실행하기 위해 본질적으로 여러 프로세스를 사용하는 것입니다.
PHP 메커니즘 자체는 다중 스레드 작업을 제공하지 않습니다. ptcl 확장은 PHP가 Linux 다중 프로세스를 작동할 수 있는 인터페이스를 제공합니다. 개인적으로는 스울의 멀티 프로세스 방식이 더 편리하다고 생각합니다.
위 내용은 Swoole 다중 프로세스 작업 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!