PHP多程序使用

2021-10-05 09:05:54 字數 2238 閱讀 9678

在我們生活中很少會用都多程序,一般在於處理資料多以及密集計算的業務中

下面我舉乙個例子給大家:

利用多程序批量更新資料

```php

$productmodel=new product();

$count=productmodel->count();

$limit=100; $page=1; $maxpage=ceil($count/$limit);

//閉包函式

$exportfunc=function($page) use($productmodel,$limit,$offset,$maxpage)

$task = new \multiprogress(3, $exportfunc);

for($page = $maxpage; $page > 0; $page--)

$task->run();

multiprogress 類封裝

class

multiprogress

$this

->

processnum

=$processnum

;$this

->

function

=$function

;$this

->

callback

=$callback;}

public

function

__destruct()

catch

(exception

$err)}

public

function

put(

)//獲取傳遞引數的個數 1

$count

=func_num_args()

;//遍歷引數

$args=[

];for($i=

0;$i<

$count;$i

++)file_put_contents

($this

->

queuefile

,json_encode

($args).

"\n",)

;}public

function

get(

)catch

(\exception

$err)if

($employ==0

)$data

=explode

("\n"

,trim

($data))

;$parameter

=array_pop

($data);

file_put_contents

($this

->

queuefile

,implode

("\n"

,$data))

;file_put_contents

($this

->

queueemploy,0

);$parameter

=json_decode

($parameter

,true);

break;}

sleep

(rand(1

,3))

;}while

(true);

return

$parameter;}

public

function

createthread

($processnum

)elseif

($pid

)else

catch

(\exception

$err

)\n"

;dump

($err);

}if($status

&&$callback

)catch

(\exception

$err)}

}while

(true);

exit()

;}dump(4

);}// 等待程序結束

while

(pcntl_waitpid(0

,$status)!=

-1)}

public

function

run(

)}

該方法主要實現了程序之間搶占程序的時候的乙個臨時檔案鎖。對程序的**等機制

PHP多程序 4 內部多程序

說的都是只相容unix 伺服器的多程序,下面來講講在window 和 unix 都相容的多程序 這裡是泛指,下面的curl實際上是通過io復用實現的 通過擴充套件實現多執行緒的典型例子是curl,curl 支援多執行緒的抓取網頁的功能。這部分過於抽象,所以,我先給出乙個curl並行抓取多個網頁內容的...

PHP多程序 四 內部多程序

上面乙個系列的教程 用 socket 和 pcntl 實現乙個多程序伺服器 一 php多程序程式設計 一 php多程序程式設計 二 管道通訊 php多程序程式設計 三 多程序抓取網頁的演示 說的都是只相容unix 伺服器的多程序,下面來講講在window 和 unix 都相容的多程序 這裡是泛指,下...

PHP多程序(1)PHP多程序初探

近日在開發過程 現了乙個奇葩問題。在我使用 php子程序處理發郵件的時候,在隔天再次1觸發相關 流程時,會把昨天的資料從使用子程序後再次重新處理一遍。導致資料出現重複,引發髒資料。為此,優化了 並且重新梳理了一下關於php多程序的問題。實際上php是有多程序的,有一些人在用,總體來說php的多程序還...