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

Webman控制器與自定義進(jìn)程通信的最佳姿勢(shì)?

bigjason

從swoole過(guò)來(lái),今天在評(píng)估是否可以用webman開(kāi)發(fā)下一個(gè)項(xiàng)目,發(fā)現(xiàn)基本都滿足需求,但是有一個(gè)問(wèn)題沒(méi)搞明白:請(qǐng)問(wèn)webman的控制器如何與自定義進(jìn)程通信?

比如這是我的自定義進(jìn)程,基本目的是本地緩存多個(gè)小數(shù)據(jù),組成batch然后發(fā)送到sqs

class Sqs
{
    private $queueData = [];

    public function onWorkerStart()
    {
        // 每隔5秒 flush 到 sqs
        Timer::add(5, function(){
            $currentData = array_splice($this->queueData, 0);
            file_put_contents('/tmp/sqs,txt', var_export($currentData, true), FILE_APPEND);
        });
    }

    public function onMessage(TcpConnection $connection, $data)
    {
        echo "onMessage\n";
        echo "$data\n";

        $this->queueData[] = $data;
    }
}

目前看文檔好像有兩種方式:

  1. process配置listen,然后用tcpconnection連接,比如:
    // config/process.php
    'sqs'=>[
    'handler' => process\Sqs::class,
    'listen'  => 'text://0.0.0.0:9090',
    ]
// IndexController.php
function index(){
    if(!$process){
        $process = new TcpConnection('text://0.0.0.0:9090');
    }

    $process->send("some data...");
}

2 用Channel分布式通訊組件,感覺(jué)走了彎路

有沒(méi)有在控制器里面直接往這個(gè)自定義進(jìn)程發(fā)送數(shù)據(jù)的方法?類(lèi)似
process('Sqs')->write("some data.....")

2149 2 7
2個(gè)回答

evilk

這個(gè)涉及到進(jìn)程間通信
推薦走text協(xié)議,通過(guò)tcp發(fā)送數(shù)據(jù)給自定義進(jìn)程

  • 暫無(wú)評(píng)論
walkor 打賞

沒(méi)有process('Sqs')->write("some data.....")這樣的方法,你可以自己封裝。
給sqs進(jìn)程發(fā)送數(shù)據(jù)可以考慮使用udp,消耗小,速度快,不阻塞進(jìn)程。
直接用stream_socket_client就行, 類(lèi)似

$client = stream_socket_client('udp://127.0.0.1:9090');
stream_socket_sendto($client, "數(shù)據(jù)");

可以自己封裝下

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??