PHP 中的多執行緒:可能嗎?
PHP 中是否可以使用多執行緒的問題一直是一個長期存在的問題,過去關於在作業系統上強制使用多個 PHP 實例的建議。然而,這種方法帶來了記憶體利用率和進程終止的問題。
引入 pthreads
答案在於 pthreads 擴展,它為PHP 中的多線程。此擴充功能在 PHP 7.2 中可用,並且需要基於 CLI 的應用程序,因為 Web 伺服器環境不支援多執行緒。
使用 pthreads
pthreads 擴充提供了這樣的類別作為 Thread、Workers 和 Threaded物件來管理執行緒、並發執行任務和同步
簡單範例
考慮以下程式碼片段:
class AsyncOperation extends Thread { public function run() { // Long-running operation } } $stack = array(); foreach (range("A", "D") as $i) { $stack[] = new AsyncOperation($i); } foreach ($stack as $t) { $t->start(); }
此程式碼建立多個執行緒並同時執行它們,輸出時間戳記和任務狀態。
現實世界範例
PHP 中多執行緒的實際應用是發出非同步Web 要求:
class AsyncWebRequest extends Thread { public function run() { $this->data = file_get_contents($this->url); } } $g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10)); $g->start(); while ($g->isRunning()) { echo "."; usleep(100); } if ($g->join()) { printf("Request took %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data)); }
此程式碼啟動非同步Web 請求,在此過程中列印點,並記錄時間收到回覆。
結論
與透過 pthreads 擴展,PHP 提供了強大的多線程機制,允許開發人員並發執行任務並提高基於 CLI 的應用程式的效能。
以上是PHP 真的可以多執行緒嗎? pthreads 解決方案解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!