国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

靜態(tài)類多進程之間共享數(shù)據(jù)的問題

9raxdev

假設(shè)有一個靜態(tài)類

class Data{
    static $rules;
}

我在new Worker 前對$rules進行了賦值操作,后面在 $worker->onMessage(){} 里面進行了修改。

那么在onMessage的操作其余的進程能否讀取到操作后的?

多進程之間onMessage是如何區(qū)別當(dāng)前屬于哪個進程,為什么我在

$worker->onMessage=function($connection){
    echo $connection->id;
    //固定的
};

如何調(diào)試各個進程的$rules的狀態(tài)?

3152 1 1
1個回答

phpcreeper

1、讀不到: 多進程之間的進程變量是彼此隔離的,是不能直接互相訪問的,如果要共享的話,需要借助GlobalData、redis組件來實現(xiàn);
2、區(qū)分各個進程: 每個進程都有一個唯一的id編號,其實本質(zhì)和進程ID是以一對一的概念抽象,可以這樣獲取區(qū)分:

$worker_id = $connection->worker->id;

3、connection->id固定: 這個是每個tcp連接的id編號,當(dāng)前活動進程內(nèi)自增唯一,最大值為PHP_INT_MAX。

  • 9raxdev 2020-07-07

    在此基礎(chǔ)之上,有沒有方法控制鏈接請求走哪個$worker_id ?貌似本地測試的時候一直是$connection->worker->id =1 的在響應(yīng)

  • phpcreeper 2020-07-07

    1、這個沒法控制的,哪個進程去accept哪個連接請求這是由操作系統(tǒng)內(nèi)核調(diào)度的。
    2、不要被"某個連接一直似乎被某個進程在處理"的表面現(xiàn)象給迷惑了,你多壓測連接量自然就看出不是這么回事了,一個進程能一直在處理,只能說明這個進程還是不夠繁忙能夠處理過來。

年代過于久遠,無法發(fā)表回答
??