PHP系統程式設計 01 多程序與多執行緒

2021-08-08 22:01:15 字數 1138 閱讀 5333

php中提供了乙個擴充套件pcntl,可以利用作業系統的fork呼叫來實現多程序。fork呼叫後執行的**將是並行的。

使用多程序, 子程序結束以後, 核心會負責**資源

使用多程序, 子程序異常退出不會導致整個程序thread退出. 父程序還有機會重建流程.

乙個常駐主程序, 只負責任務分發, 邏輯更清楚.

多程序方式更加穩定,另外利用程序間通訊(ipc)也可以實現資料共享。

共享記憶體,這種方式和執行緒間讀寫變數是一樣的,需要加鎖,會有同步、死鎖問題。

訊息佇列,可以採用多個子程序搶佇列模式,效能很好

執行緒是在同乙個程序內的,可以共享記憶體變數實現執行緒間通訊

執行緒比程序更輕量級,開很大量程序會比執行緒消耗更多系統資源

多執行緒也存在一些問題:

在php中程序控制支援預設是關閉的。您需要使用 –enable-pcntl 配置選項重新編譯php來開啟程序控制支援。注:pcntl只支援linux版本

##本例用的php版本的是5.3.3,cd php

-5.3.3

/ext

/pcntl

phpize

./

configure

--with

-php

-config

=/usr/

local

/bin

/php

-config

make

make isntall

在php.ini下加入pcntl.so即可

extension=pcntl.so

現在我們通過 pcntl擴充套件來呼叫作業系統的fork實現多程序。fork呼叫後執行的**將是並行的。

php

$pid

=pcntl_fork

();if

($pid

>0)

elseif

($pid ==0

)else

linux系統程式設計 多程序

最近發現每天都在寫業務 好多基礎的東西都忘了,今天開始每天覆習一點基礎知識。今天先複習多程序 程序是具有一定功能的程式的一次執行活動,是系統資源分配和排程的基本單位 孤兒程序 父程序退出,子程序沒有退出,被init程序收養 init程序 是核心啟動後執行的第乙個程序,是所有孤兒程序的子程序。init...

系統程式設計 01 程序基礎

一,概念 1.程序是程式在計算機上的一次執行過程。2.程序的狀態 就緒 ready 執行 running 阻塞 blocked 二,程序的操作 1.檢視程序 linux系統 指令 1 ps 檢視程序 ps p 檢視程序的pid ps aux bsd風格顯示程序 2 top 實時顯示系統中各個程序的資...

01 Linux系統程式設計基礎 程序

1.並行與併發 區分的關鍵點是 同時 並行 parallel 指在同一時刻,有多條指令在多個處理器上同時執行。併發 concurrency 指在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在巨集觀上具有多個程序同時執行的效果。即巨集觀上同時,微觀上交替執行。2.程序控制塊pcb ...