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

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

liuzeming

我想問一下這個(gè)$worker是屬于第一個(gè)進(jìn)程的變量 怎么傳遞給onWorkerStart新起的worker進(jìn)程的呢

5405 4 1
4個(gè)回答

phpcreeper

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

  • liuzeming 2020-07-17

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

  • phpcreeper 2020-07-17

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

  • liuzeming 2020-07-18

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

  • liuzeming 2020-07-18

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

  • phpcreeper 2020-07-18

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

  • liuzeming 2020-07-18

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

  • phpcreeper 2020-07-18

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

  • liuzeming 2020-07-18

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

liuzeming

不是吧 我用ps看是有新的進(jìn)程的呢

  • phpcreeper 2020-07-15

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

elibool

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

在 start.php 啟動(dòng)文件添加,

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ā)測(cè)試過,測(cè)試通過

  • yongdao35 2022-03-31

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

  • elibool 2022-04-01

    追加評(píng)論無法貼圖,在下個(gè)樓層重新回復(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

    這個(gè)不應(yīng)該在子進(jìn)程中嗎?

elibool

我是 k8s docker 容器環(huán)境,第一次測(cè)試確實(shí)是非 -d 進(jìn)程守護(hù)模式測(cè)試; 剛才特意改造了下 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ù)載請(qǐng)求狀況

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

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