首页 > PHP技术 > swoole > 工作效率不行?带你如何使用swoole进行多线程多处理
2021
09-02

工作效率不行?带你如何使用swoole进行多线程多处理

swoole是用c写的。Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。


而在我们遇到需要多任务同时进行操作的时候,我们可以采用多进程,也可以采用多线程。本文将给大家分享一下如何使用swoole的多线程进行多任务处理

比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。

不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如果需要则发送。如果发送邮件耗时2s,发送短信耗时2s,那么我们完成任务大概需要4s左右的时间。

如果我们使用多线程的话,可以开两个线程,一个用于处理邮件,一个用于处理短信,则耗时一共需要2s左右,处理时间缩短了一半。

$info = array(

"sendmail"=>1,

"mailto"=>"[email protected]",

"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']);

    }

}

测试结果如下


以上就是“工作效率不行?带你如何使用swoole进行多线程多处理”的详细内容,想要了解更多swoole教程欢迎持续关注编程学习网

扫码芷若 获取免费视频学习资料

编程学习

查 看2019高级编程视频教程免费获取