中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php程序阻塞與非阻塞的區別有哪些

發布時間:2022-03-18 13:33:27 來源:億速云 閱讀:194 作者:iii 欄目:編程語言

本篇內容主要講解“php程序阻塞與非阻塞的區別有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php程序阻塞與非阻塞的區別有哪些”吧!

PHP程序阻塞和非阻塞的區別是:阻塞調用結果返回之前,當前線程會被掛起,調用者不會接著往下執行;而非阻塞調用結果返回之前,該調用不會阻塞當前線程,可以繼續向下執行。

本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦。

php程序阻塞與非阻塞的區別是什么

阻塞和非阻塞關注的是程序在等待調用結果(消息,返回值)時的狀態.

阻塞調用是指調用結果返回之前,當前線程會被掛起。調用線程只有在得到結果之后才會返回。

非阻塞調用指在不能立刻得到結果之前,該調用不會阻塞當前線程。

1.php并發阻塞

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

簡單介紹:

1.首先,讀寫方式打開或者創建文件lock.txt文件

2.給lock.txt文件上 "獨占鎖",上鎖成功后就可以進行下一步"處理訂單商品數據了"

3.處理完數據后,要"釋放鎖”,以及fclose關閉打開的文件

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

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';
}

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

2.php非阻塞模式

非阻塞模式我們常用在php程序內部調用第三方api接口,或者不需要等待結果的程序。

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

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

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

到此,相信大家對“php程序阻塞與非阻塞的區別有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

桐庐县| 黔东| 莱西市| 上思县| 东宁县| 黑龙江省| 广汉市| 揭阳市| 常宁市| 盱眙县| 革吉县| 柏乡县| 济源市| 庆城县| 赤城县| 广元市| 东兴市| 兰州市| 闸北区| 海门市| 凤阳县| 乳山市| 泉州市| 黄山市| 皮山县| 六枝特区| 揭西县| 大荔县| 色达县| 青州市| 兴山县| 唐河县| 江永县| 原平市| 类乌齐县| 河池市| 德兴市| 寻乌县| 梅河口市| 定安县| 浙江省|