问题描述 PHP有内置的服务器,就是PHP -S 命令,但这个命令是阻塞的,及时是加载js等静态资源也都是阻塞的。 如果使用workerman代替这个命令,能非阻塞处理吗? 为此你搜索到了哪些方案及不适用的原因 我的预期是,在windows上运行后,可以非阻塞的发起请求,比如静态资源和业务逻辑。最好的情况是,如果业务逻辑阻塞的话,HTTP服务不要阻塞。 我希望把程序打包运行,如果workerman能实现的话,就不需要...
问题描述 我需要长期运行一个外部的可以执行文件,它带有一个rpc服务,然后在workerman里做一些定时器,定时请求rpc服务。我的想法是启动两个worker,第一个用来执行外部的命令,worker启动时启动,worker退出时退出,另一个worker里做逻辑。 为此你搜索到了哪些方案及不适用的原因 在第一个worker里,好像不适合使用exec等命令,因为这些命令是阻塞的。那么直接简单使用exec呢? 我还使用s...
问题描述 守护进程重启会强制终端正在进行的操作吗? 像下面代码这样: $worker->onWorkerStart = function (Worker $worker) { Timer::add( 0.1, function () { // 耗时操作,执行五秒 file_get_content(xxx); ...
问题描述 workerman应该如何捕获回调中的异常呢?除了在每个回调中使用try catch的写法,有没有全局的写法,而且还不能影响进程自动重启。 基本代码 define('GLOBAL_START', 1); foreach (glob(app()->getBasePath() . '/worker/' . $this->commandName . '/start*.p...
workerman环境下是否有自身php实现的队列功能。我想咨询的并不是依赖redis或其他的服务的方案。而是workerman自己实现的一个服务。 我想要的场景也很简单,其实就是redis的list中的push功能和blPop命令。 有一个进程会向队列插入 id,其他的 进程随时消费获取id。不能出现重复分配。 装redis自然是能用,但是有没有人用workerman实现过这个场景的服务吗。 最终想要的效果代码其实...
问题描述 长连接转发会阻塞吗?我想对后端的请求做一个并发控制,超出的来自前端连接暂时不处理,会阻塞吗,会断开吗? 我也有比较丰富的workerman开发经验,做个聊天服务端、物联网服务端、内网穿透、端口转发等等。但是上面这个问题,还是比较纠结。 我想做的是这样的,后端运行的是图片转换的http服务,但是很吃硬件,超出内存会出错,所以要限制并发,而且一次请求响应的时间很长。 所以来自前端的连接,我打算通过workerm...
有没有基于GlobalData作为底层的,实现了标准缓存接口的扩展库? 就是实现了:Psr\SimpleCache\CacheInterface的扩展库。...
iptables -A INPUT -p tcp --dport 8080:9090 -j ACCEPT iptables -A OUTPUT -p tcp --sport 8080:9090 -j ACCEPT iptables-save iptables可以监听一个端口范围,workerman能否做到呢? 如果每个端口都是实例化一个worker监听,这个我会,但是感觉太不优雅了,如果我要监...
我希望自定义 status 信号的输出的内容,看代码的话,只能重写 formatStatusData方法或者 parseCommand,有没有可能增加一个自定义回调的借口呢,比如给worker定义一个方法,这个方法只能返回字符串.拼接到formatStatusData的底部....
比如:一个进程,监听0.0.0.0:443地址,当有连接请求时,根据不同的域名,使用相对应的ssl证书去解密. 就是先有一个socket,不设置ssl证书,等连接来时,根据不同的域名,给socket配置相应的证书, 不过我看https原理发现这样不通,https是先进性ssl握手,之后再将数据返回到上层, 想实现这个效果用workerman能吗,php能吗. 就跟nginx是的,配置好每个域名对应的证书,...
在linux下,运行了一个worker,里面有逻辑,根据情况new 一个新的worker,并且run(),这样一个新的进程worker便运行.但是怎么结束呢, 我试过用stop(),但是当我在终端结束进程时,发现会输出很多worker 结束的信息,似乎调用了stop并没有回收进程; 比如我在worker里定时每秒new worker 并且run() 并且 stop(),十秒后,按理来说新开了十个进程并且也结束了,...
https://github.com/walkor/Workerman/pull/396 原本的http协议不能把上传的文件处理成和其他服务器一样的效果,比如我在使用thinkphp时,thinkphp的上传文件处理类并不能用,而这并不是thinkphp的锅,http协议处理上传文件的方法确实不符合一般的服务器文件上传效果.可以处理下吗,或者至少让这个文件处理方法parseUploadFiles能够被重写. 这个...
监听的udp端口6000, worker里有一个listen和unlisten方法,我希望在一个逻辑地方,unlisten,使用异步udp发起一个连接,指定使用6000端口发起,然后调用listen. 但是为什么还是报already in use 错误. 代码如下: $server就是监听在4788下的worker, 这段代码写在一个回调里面, 打印unlisten的信息(改worker.php),确实关闭了sock...
假设用4788端口异步发起udp连接,然后断开,向第二个人发送,此时第一个人发来消息,能否触发onmessage. 比如我是s 使用$context 指定 sock band_to 4788端口 向a.a.a.a:a发起udp连接并发送数据,然后关闭连接.紧接着又向b.b.b.b:b发起一个udp链接,此时a发来消息,请问这个a发来的连接能否触发onmessage,还是说a发来的数据就"丢失了"...
(udp)能不能使用监听的端口发消息?比如监听udp,4778,向其他服务器主动发消息时,也用4778发出. 我测试的是不可以的,使用reusePort也不行,我的写法如下: $a = new Worker(xxx:4778); $a->reusePort = true; $a->onWorkerStart = function(){ $opts = ; $n = new AsyncUdp...
需求目标: 我有一份自定义协议,实质上有且只有3个回调事件,比如onA,onB,onC,是否可以通过自义定协议的解包方法(decode)实现调用上述三个事件,而不用去理会onMessage. 试图实现的方法: 我在自定义协议的decode的逻辑里,在解包逻辑之后,分别通过call_user_function,调用连接对象中不同的回调事件,最后return '' 这也是合理的设计吗? 以下截图是websoc...
我希望做的是使用worke实例化时,使用我自定义的协议,直接监听udp端口. 手册上在介绍自定义协议时没有介绍该协议是在tcp下使用的还是udp下使用的,而我在看内置的协议时,发现有的协议指定连接必须是tcp对象,有的是连接的抽象对象,有的没有指定,如图,从上到下依次是text,ws,websocket. , 如果我自定义的协议只能给udp使用,是不是要用udp的类做连接. 还是说无论协议如何定制,想实现tcp或者...