使用webman 打包工具打包后,在webman中自定义的进程无法启动,比如我在start.php 中开启了一个websocket程序,使用源码启动的时候是可以监听到端口的,但是使用打包后的bin 启动时就没有websocket监听的端口了
按照webman文档自定义进程去设置才行。 https://www.workerman.net/doc/webman/process.html
这个方式好像无法获取到work实例,而且在app下的database.php的数据配置要想要也使用不了,我需要获取到work实例,然后给所有的客户端推送消息
public function onWorkerStart($worker) { $this->worker = $worker; }
onWorkerStart 里获取,然后存到属性里
感谢
如果启动4个进程,onWorkerStart 会被调用4次,$this->worker = $worker; 这样不是会后面的覆盖掉前面的吗?这样的话调用$this->worker 只能获取到最后一次调用时的worker
每个进程是独立的,都有自己的worker。如果你要给所有连接发消息,建议可以只开1个进程,不要开4个。 否则A进程里调用worker给所有连接发消息,B进程里的连接是收不到的。
websocket服务建议用webman/push https://www.workerman.net/plugin/2
我又遇到一个问题,就是打包前文件上传是在public/uploads 目录下这个目录给到写的权限,但是打包后这个目录好像就不知道去哪里了?而且权限也不知道如何给
config/app.php
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
按照文档做
按照webman文档自定义进程去设置才行。
https://www.workerman.net/doc/webman/process.html
这个方式好像无法获取到work实例,而且在app下的database.php的数据配置要想要也使用不了,我需要获取到work实例,然后给所有的客户端推送消息
onWorkerStart 里获取,然后存到属性里
感谢
如果启动4个进程,onWorkerStart 会被调用4次,$this->worker = $worker; 这样不是会后面的覆盖掉前面的吗?这样的话调用$this->worker 只能获取到最后一次调用时的worker
每个进程是独立的,都有自己的worker。如果你要给所有连接发消息,建议可以只开1个进程,不要开4个。
否则A进程里调用worker给所有连接发消息,B进程里的连接是收不到的。
websocket服务建议用webman/push https://www.workerman.net/plugin/2
我又遇到一个问题,就是打包前文件上传是在public/uploads 目录下这个目录给到写的权限,但是打包后这个目录好像就不知道去哪里了?而且权限也不知道如何给
config/app.php
。按照文档做