webman打包自定义进程

Lyd

使用webman 打包工具打包后,在webman中自定义的进程无法启动,比如我在start.php 中开启了一个websocket程序,使用源码启动的时候是可以监听到端口的,但是使用打包后的bin 启动时就没有websocket监听的端口了截图

截图

537 1 0
1个回答

walkor 打赏

按照webman文档自定义进程去设置才行。
https://www.workerman.net/doc/webman/process.html

  • Lyd 2024-09-18

    这个方式好像无法获取到work实例,而且在app下的database.php的数据配置要想要也使用不了,我需要获取到work实例,然后给所有的客户端推送消息

  • walkor 2024-09-18
    public function onWorkerStart($worker) {
         $this->worker = $worker;
    }

    onWorkerStart 里获取,然后存到属性里

  • Lyd 2024-09-18

    感谢

  • Lyd 2024-09-18

    如果启动4个进程,onWorkerStart 会被调用4次,$this->worker = $worker; 这样不是会后面的覆盖掉前面的吗?这样的话调用$this->worker 只能获取到最后一次调用时的worker

  • walkor 2024-09-18

    每个进程是独立的,都有自己的worker。如果你要给所有连接发消息,建议可以只开1个进程,不要开4个。
    否则A进程里调用worker给所有连接发消息,B进程里的连接是收不到的。

  • walkor 2024-09-18

    websocket服务建议用webman/push https://www.workerman.net/plugin/2

  • Lyd 2024-09-27

    我又遇到一个问题,就是打包前文件上传是在public/uploads 目录下这个目录给到写的权限,但是打包后这个目录好像就不知道去哪里了?而且权限也不知道如何给

  • walkor 2024-09-27
    • 如果你的业务需要上传文件到public目录,需要将public目录独立出来放在webman.bin所在目录,这时候需要配置config/app.php
      'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

    按照文档做

×
🔝