站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        php程序阻塞與非阻塞的區(qū)別是什么

        PHP程序阻塞和非阻塞的區(qū)別是:阻塞調(diào)用結(jié)果返回之前,當(dāng)前線程會被掛起,調(diào)用者不會接著往下執(zhí)行;而非阻塞調(diào)用結(jié)果返回之前,該調(diào)用不會阻塞當(dāng)前線程,可以繼續(xù)向下執(zhí)行。

        php程序阻塞與非阻塞的區(qū)別是什么

        本文操作環(huán)境:Windows10系統(tǒng)、PHP7.1版、Dell G3電腦。

        php程序阻塞與非阻塞的區(qū)別是什么

        阻塞和非阻塞關(guān)注的是程序在等待調(diào)用結(jié)果(消息,返回值)時的狀態(tài).

        阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前線程會被掛起。調(diào)用線程只有在得到結(jié)果之后才會返回。

        非阻塞調(diào)用指在不能立刻得到結(jié)果之前,該調(diào)用不會阻塞當(dāng)前線程。

        1.php并發(fā)阻塞

          對于php來說并發(fā)是個問題,工作中經(jīng)常會碰到一些,寫庫之前的查詢,判斷數(shù)據(jù)是否存在,但是如果并發(fā)的情況下,就會導(dǎo)致數(shù)據(jù)重復(fù)寫入,而你的判斷也成了虛設(shè)。所以有了阻塞,我們需要把請求一條一條的執(zhí)行。

        簡單介紹:

        1.首先,讀寫方式打開或者創(chuàng)建文件lock.txt文件

        2.給lock.txt文件上 "獨(dú)占鎖",上鎖成功后就可以進(jìn)行下一步"處理訂單商品數(shù)據(jù)了"

        3.處理完數(shù)據(jù)后,要"釋放鎖”,以及fclose關(guān)閉打開的文件

        注意:給文件“獨(dú)占鎖”后,如果再沒有里面的“釋放鎖”,會出現(xiàn)非常卡的情況

        public function index(){     $fp = fopen("lock.txt", "w+");     if(flock($fp,LOCK_EX))     {         $find=Db::name('user')->where('username','name2')->find();         if($find){             $data['username']='name3';             $data['password']='';             $data['password_m']='';             Db::name('user')->insert($data);         }else{             $data['username']='name2';             $data['password']='';             $data['password_m']='';             Db::name('user')->insert($data);         }         flock($fp,LOCK_UN);     }     fclose($fp);     return 'success'; }

        注意:對于小并發(fā)可行,而且性能不會出現(xiàn)大的影響。并發(fā)小于500較好,如果過高的話,建議使用隊列模式。

        2.php非阻塞模式

        非阻塞模式我們常用在php程序內(nèi)部調(diào)用第三方api接口,或者不需要等待結(jié)果的程序。

        舉一個簡單的例子。發(fā)送郵件,你要發(fā)送給你的所有的老大,那么你需要全部都發(fā)送一遍,也許你得寫一個循環(huán),那么這一個循環(huán)中發(fā)郵件的方法需要執(zhí)行時間,需要拿到返回值,執(zhí)行下一次循環(huán),這個時間依次累加,最后時間會邊的很長,

        那么這種被稱之為阻塞,而我們一直想要的是提交過去,不需要等待返回數(shù)據(jù),你就循環(huán)的跑一遍就好了,那么我們想的這個就是非阻塞模式。對于這種的話,php也沒有什么好的函數(shù)來處理,所以我們做的最多的還是隊列出來,發(fā)郵件的時候,

        根據(jù)隊列去執(zhí)行,其實用到的還是阻塞模式。但是我們的請求執(zhí)行時間會被壓縮的很短,最常用的就是調(diào)用API接口,而你此時又不關(guān)心返回值的時候。

        推薦學(xué)習(xí):《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲国产精品成人一区| 综合人妻久久一区二区精品| 精品亚洲视频在线观看| 国产精品熟女一区二区| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 国产亚洲精品免费视频播放| 精品无人区一区二区三区| 久久99精品国产麻豆蜜芽| 四虎精品8848ys一区二区| 国产精品污WWW在线观看| 亚洲精品麻豆av| 国亚洲欧美日韩精品| 国产精品高清在线| 亚洲国产精品欧美日韩一区二区| 3级黄性日本午夜精品| 国产区精品一区二区不卡中文| 国产精品天干天干在线综合| 亚洲精品国产成人片| 国产vA免费精品高清在线观看| 久久精品99无色码中文字幕| 欧美日韩精品一区二区| 国产精品久久久久久福利漫画| 欧美精品黑人粗大欧| 国产精品成人久久久久久久| 亚洲国产精品无码专区影院| 青草青草久热精品视频在线网站| 亚洲国产精品无码久久久久久曰| 久久福利青草精品资源站免费| 亚洲精品视频在线观看你懂的| 国产精品人成在线播放新网站| 国产高清在线精品一区二区| 久久99精品国产| 精品久久久久久国产| 欧美大片日韩精品| 99riav国产精品| 久久精品国产亚洲AV无码偷窥| 国产精品无打码在线播放| 99精品国产丝袜在线拍国语| 精品国产第一国产综合精品 | 乱码精品一区二区三区| 日产精品久久久一区二区|