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影片教學》
以上是php程式阻塞與非阻塞的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具