PHP並行程式設計探索之一 多程序

2021-08-05 22:47:53 字數 859 閱讀 1745

說實話,我一直在想php並行程式設計是個什麼樣子的,網上查資料寫的不多而且雜,決定根據大多數的資料總結一下。

php 多程序我認為是php原生程式設計裡最接近併發程式設計的,同時開始執行多個任務。

多程序:多個

程序(資源分配的最小單位)同時執行多個任務

如上圖所示,開闢了3個子程序,分別執行了3個不同的任務,同時開始執行這些互無關聯的程序。有點非同步的味道。

php多程序看看是很nb的,可以把那些耗時的 但又必須執行的查詢分成多個子程序查,

但是,php多程序不支援php-fpm和cgi模式,只能通過php-cli 模式,所以對於web頁面的請求,多程序的夢想破滅。

適用場景:

定時任務執行,且互斥耗時的任務(資料的批量插入,批量更新,日誌的批量操作)

下面舉個簡單的栗子:

class concurrency

public function run()

$i++;

}//等待程序關閉

for($i=0;$i

}$end = $this->microtime_float();

echo "\n執行時間",$end-$start;

} public function task($task_id)

else

} }$con = new concurrency();

$con->run();

列印結果:

2222

3333

執行時間3.0103249549866   

程序(一) 多程序的呼叫

由於gil的存在,python中的多執行緒其實並不是真正意義的多執行緒,如果想要充分地使用多核cpu的資源,在python中大部分情況需要使用多程序。multiprocessing包是python中的多程序管理包。與threading.thread類似,他利用multiprocessing.proc...

PHP多程序程式設計(一)

雖然php 中,多程序用的比較的少。但是畢竟可能是會用到了。我最近就遇到這樣乙個問題,使用者提交幾百個url以後,要讀出這個url 中的標題。當然,你不希望使用者等待的太久,10s 鐘應該給出個答案。但是,本身,你要獲取乙個url 的標題,少的要 0.1s 多的要好幾秒。顯然,採用單個執行緒的方式是...

PHP多程序程式設計(一)

雖然php 中,多程序用的比較的少。但是畢竟可能是會用到了。我最近就遇到這樣乙個問題,使用者提交幾百個url以後,要讀出這個url 中的標題。當然,你不希望使用者等待的太久,10s 鐘應該給出個答案。但是,本身,你要獲取乙個url 的標題,少的要 0.1s 多的要好幾秒。顯然,採用單個執行緒的方式是...