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

進程之間共享數(shù)據(jù)

liuzeming

我想問一下這個$worker是屬于第一個進程的變量 怎么傳遞給onWorkerStart新起的worker進程的呢

5389 4 1
4個回答

phpcreeper

onWorkerStart內(nèi)的new Worker()并沒有新起什么進程,始終工作在當(dāng)前進程內(nèi);

  • liuzeming 2020-07-17

    那new Worker()的結(jié)果什么啊 我看它也有一些事件,比如:onMessage。它和$worker的關(guān)系是怎樣的哇,它為什么不會阻塞onWorkerStart的執(zhí)行流程。之前我嘗試在onWorkerStart使用監(jiān)聽一個redis隊列的方式來接收數(shù)據(jù),但是會阻塞onWorkerStart往下執(zhí)行

  • phpcreeper 2020-07-17

    1、new Worker只是創(chuàng)建了一個worker實例,當(dāng)這個實例是一個socket實例的時候,onXXX的一些回調(diào)自然就用上了;
    2、新建的worker實例和$worker實例是完全獨立的兩個不同實例,沒有任何關(guān)系;
    3、使用監(jiān)聽redis隊列的方式所引起的進程阻塞是因為涉及了IO操作,這個業(yè)務(wù)代碼自己就能判定;

  • liuzeming 2020-07-18

    想了解一下為什么新起的worker實例不會阻塞onWorkerStart執(zhí)行,我的猜想是監(jiān)聽端口也會阻塞至accept(當(dāng)然有可能是使用select、epoll實現(xiàn)多路復(fù)用),能夠說說為什么這個worker的監(jiān)聽不會阻塞onWorkerStart向下執(zhí)行的原理嗎?謝謝!

  • liuzeming 2020-07-18

    我的想法只要有監(jiān)聽就有while(true) {} 這種循環(huán),保證一直去看有沒有有的連接產(chǎn)生,然后讀寫數(shù)據(jù)

  • phpcreeper 2020-07-18

    1、因為listen socket是非阻塞的;另外網(wǎng)絡(luò)IO也是采用的基于事件的異步非阻塞模型;
    2、workerman“不是可能”而是“確實”使用了IO多路復(fù)用技術(shù);

  • liuzeming 2020-07-18

    我早上看了一下源碼,不知道理解對不對。worker的listen方法在監(jiān)聽時調(diào)用的static來注冊事件至$globalEvent這個全局?jǐn)?shù)組(屬于類靜態(tài)變量,在同一個進程共享值),所以不管多久添加的事件都可以在loop里面一起監(jiān)測有沒有觸發(fā)的

  • phpcreeper 2020-07-18

    理解的沒錯呢,網(wǎng)絡(luò)事件庫就是這么玩的。

  • liuzeming 2020-07-18

    @614:算是明白了,不管哪種協(xié)議的connection都是統(tǒng)一注冊到這個數(shù)組,統(tǒng)一loop的。

liuzeming

不是吧 我用ps看是有新的進程的呢

  • phpcreeper 2020-07-15

    可以非常確定你截圖里的onWorkerStart回調(diào)內(nèi)的代碼是工作在父進程所派生的當(dāng)前的子進程內(nèi),并沒有產(chǎn)生或者說工作在再下一級的子進程,所以你ps確認(rèn)的肯定不正確。

elibool

可以 php 安裝 Yac 擴展,webman 版本:v1.2.7

在 start.php 啟動文件添加,

ini_set('display_errors', 'on');
error_reporting(E_ALL);

// 啟用 yac 內(nèi)存共享組件
$yac = new Yac();

在 controller 文件夾內(nèi)

<?php

namespace app\controller;

use support\Request;
use support\Log;

class Index
{
    public function index(Request $request)
    {
        global $yac;
        $yac->add("ab", "hello");
        print_r($yac->get("ab"));
    }
}

已經(jīng)過 jemter 并發(fā)測試過,測試通過

  • yongdao35 2022-03-31

    還能這么玩?$yac = new Yac();直接寫在start.php不行吧,多個進程共享$yac實例了,守護進程運行感覺會有問題。

  • elibool 2022-04-01

    追加評論無法貼圖,在下個樓層重新回復(fù)了 , php 代碼貼上

    namespace app\controller;
    
    use support\Request;
    use support\Log;
    
    class Index
    {
        public function index(Request $request)
        {
            global $yac;
            $yac->add("abs", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
        }
    
        public function json(Request $request)
        {
            global $yac;
            return json([$yac->get("abs")]);
        }
    
    }
    
  • Tinywan 2022-04-01

    這個不應(yīng)該在子進程中嗎?

elibool

我是 k8s docker 容器環(huán)境,第一次測試確實是非 -d 進程守護模式測試; 剛才特意改造了下 docker-compose.yml 文件, 結(jié)果還是成功;

version: '3'
services:
  php-cli-7.4:
    build: php
    volumes:
      - ../ztjy-growth-zone-server:/wwwroot
      - ../data/runtime/:/wwwroot/runtime
      - ../data/app_config:/data/app_config
    ports:
      - 38000:38000
    command: >
      nohup sh -c "cd /wwwroot && php start.php start -d && top"
      # 原本命令為: sh -c "cd /wwwroot && php start.php start"

webman 均衡負(fù)載請求狀況

jemeter 請求結(jié)果:
jemeter 20 個線程負(fù)載請求 100 次

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??