編程學(xué)習(xí)網(wǎng) > PHP技術(shù) > swoole > 工作效率不行?帶你如何使用swoole進行多線程多處理
2021
09-02

工作效率不行?帶你如何使用swoole進行多線程多處理

swoole是用c寫的。Swoole 使 PHP 開發(fā)人員可以編寫高性能高并發(fā)的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服務(wù),讓 PHP 不再局限于 Web 領(lǐng)域。Swoole4 協(xié)程的成熟將 PHP 帶入了前所未有的時期, 為性能的提升提供了獨一無二的可能性。Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動通信、云計算、 網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(IOT)、車聯(lián)網(wǎng)、智能家居等領(lǐng)域。使用 PHP + Swoole 可以使企業(yè) IT 研發(fā)團隊的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。


而在我們遇到需要多任務(wù)同時進行操作的時候,我們可以采用多進程,也可以采用多線程。本文將給大家分享一下如何使用swoole的多線程進行多任務(wù)處理

比如,我們要對已知的用戶數(shù)據(jù)進行判斷,是否需要發(fā)送郵件和短信,如果需要發(fā)送則發(fā)送。

不使用多進程時,我們首先判斷是否發(fā)送郵件,如果需要則發(fā)送;然后再判斷是否需要發(fā)送短信,如果需要則發(fā)送。如果發(fā)送郵件耗時2s,發(fā)送短信耗時2s,那么我們完成任務(wù)大概需要4s左右的時間。

如果我們使用多線程的話,可以開兩個線程,一個用于處理郵件,一個用于處理短信,則耗時一共需要2s左右,處理時間縮短了一半。

$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();

//主進程輸出子進程范圍內(nèi)容

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;

//并行函數(shù)

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

    }

}

測試結(jié)果如下


以上就是“工作效率不行?帶你如何使用swoole進行多線程多處理”的詳細(xì)內(nèi)容,想要了解更多swoole教程歡迎持續(xù)關(guān)注編程學(xué)習(xí)網(wǎng)

掃碼二維碼 獲取免費視頻學(xué)習(xí)資料

Python編程學(xué)習(xí)

查 看2022高級編程視頻教程免費獲取