我想问下在WORKER里的ONSTART方法里用到了NEW AsyncTcpConnection();
我想在WORKER STOP的时候 关闭这个AsyncTcpConnection连接。
另外 STOP回调会等方法执行完成吗? 或者说有什么方法让我确保我的方法能处理完成后再停止??
进程停止时AsyncTcpConnection 会自动关闭。
stop时,如果进程在处理业务则等待,最长等待2秒,如果2秒内业务还没处理完就强制退出,AsyncTcpConnection也会关闭。
谢谢,是这样的,我这边的要求是:对方要求我‘优雅’的退出,也就是worker stop的时候,我需要先告诉对方服务器我要关闭了(类似登出账号),然后再关闭AsyncTcpConnection。
但是现在基本一STOP直接就关闭了。有没有什么办法让他确保我做了一些事情后 关闭
AsyncTcpConnection 是不是直接就被关闭了,我目前看的情况是 这样的,而不是等待2秒
想要有个交互的过程,大概要1秒左右,STOP时, AsyncTcpConnection发送到对方: 我要退出 对方回应:OK
然后解除连接
目前情况是发送应该是发送过去了,但是ONMESSAGE没有收到信息
在onWorkerStop里使用AsyncTcpConnection发送我要退出,收到回应后调用Worker::stopAll();来关闭连接。停止的使用是用优雅停止命令 php start.php stop -g。 代码类似如下:
php start.php stop -g
$worker = new Worker(); $worker->onWorkerStart = function(){ global $con; $con = new AsyncTcpConnection(...); $con->onMessage = funcyion(){}; $con->connect(); }; $worker->onWorkerStop = function () { global $con; // 重置$con的onMessage,接收对方优雅停止的响应OK $con->onMessage = function($con, $data){ if ($data === 'OK') { exit(0); } }; $con->send('我要退出的包'); };
优雅停止命令 php start.php stop -g
试了下是有效的,谢谢大佬,手册上搜不到关于优雅退出的信息
进程停止时AsyncTcpConnection 会自动关闭。
stop时,如果进程在处理业务则等待,最长等待2秒,如果2秒内业务还没处理完就强制退出,AsyncTcpConnection也会关闭。
谢谢,是这样的,我这边的要求是:对方要求我‘优雅’的退出,也就是worker stop的时候,我需要先告诉对方服务器我要关闭了(类似登出账号),然后再关闭AsyncTcpConnection。
但是现在基本一STOP直接就关闭了。有没有什么办法让他确保我做了一些事情后 关闭
AsyncTcpConnection 是不是直接就被关闭了,我目前看的情况是 这样的,而不是等待2秒
想要有个交互的过程,大概要1秒左右,STOP时, AsyncTcpConnection发送到对方: 我要退出 对方回应:OK
然后解除连接
目前情况是发送应该是发送过去了,但是ONMESSAGE没有收到信息
在onWorkerStop里使用AsyncTcpConnection发送我要退出,收到回应后调用Worker::stopAll();来关闭连接。停止的使用是用优雅停止命令
php start.php stop -g
。代码类似如下:
优雅停止命令
php start.php stop -g
试了下是有效的,谢谢大佬,手册上搜不到关于优雅退出的信息