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

想把webman改成tcp協(xié)議(項(xiàng)目要求),做RPC服務(wù)有沒(méi)有大佬提供思路或者幫助,可以有償~

蠟燭神光

想把webman改成tcp協(xié)議(項(xiàng)目要求),做RPC服務(wù)有沒(méi)有大佬提供思路或者幫助,可以有償~

13480 2 56
2個(gè)回答

walkor 打賞

webman支持自定義進(jìn)程,做這個(gè)很容易。

1、新建文件 process/Rpc.php 編寫rpc進(jìn)程

<?php
namespace process;
use Workerman\Connection\TcpConnection;
class Rpc
{
    public function onMessage(TcpConnection $connection, $data)
    {
        static $instances = [];
        $data = json_decode($data, true);
        $class = 'service\\'.$data['class'];
        $method = $data['method'];
        $args = $data['args'];
        if (!isset($instances[$class])) {
            $instances[$class] = new $class; // 緩存類實(shí)例,避免重復(fù)初始化
        }
        $connection->send(call_user_func_array([$instances[$class], $method], $args));
    }
}

2、打開 config/process.php 增加配置啟動(dòng)rpc進(jìn)程

return [
    // ... 這里省略了其它配置...

    'rpc'  => [
        'handler' => process\Rpc::class,
        'listen'  => 'text://0.0.0.0:8888', // 這里用了text協(xié)議,也可以用frame或其它協(xié)議
        'count'   => 8, // 可以設(shè)置多進(jìn)程
    ]
];

3、新建 service/User.php 服務(wù) (目錄不存在自行創(chuàng)建)

<?php
namespace service;
class User
{
    public function get($uid)
    {
        return json_encode([
            'uid'  => $uid,
            'name' => 'tom'
        ]);
    }
}

4、重啟webman php start.php restart

5、客戶端調(diào)用

<?php
$client = stream_socket_client('tcp://127.0.0.1:8888');
$request = [
    'class'   => 'User',
    'method'  => 'get',
    'args'    => [100], // 100 是 $uid
];
fwrite($client, json_encode($request)."\n"); // text協(xié)議末尾有個(gè)換行符"\n"
$result = fgets($client, 10240000);
$result = json_decode($result, true);
var_export($result);

以上客戶端代碼自己可以封裝成一個(gè)類

最終結(jié)果打印

array (
  'uid' => 100,
  'name' => 'tom',
)
  • 蠟燭神光 2021-01-30

    十分感謝 已通過(guò)官網(wǎng)收款碼支持大佬,聊表心意

  • Tinywan 2021-06-24

    學(xué)習(xí)了

  • 10bang 2021-12-25

    學(xué)習(xí)了

tanhongbin

大佬就是大佬,我想了半個(gè)小時(shí)沒(méi)想明白,他一句很簡(jiǎn)單就給解決了點(diǎn)贊了

  • wangmaomao 2021-12-25

    這個(gè)是不是在linux才有用,在win下是不是不能有兩個(gè)worker

  • Tinywan 2021-12-25

    windows不支持多進(jìn)程的

  • tanhongbin 2021-12-27

    windows服務(wù)區(qū)還是孩子用比較好,咱們做開發(fā)的,測(cè)試服務(wù)器和線上服務(wù)器必須linux呀,性能差太多了

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