我想問下在WORKER里的ONSTART方法里用到了NEW AsyncTcpConnection();
我想在WORKER STOP的時(shí)候 關(guān)閉這個(gè)AsyncTcpConnection連接。
另外 STOP回調(diào)會(huì)等方法執(zhí)行完成嗎? 或者說有什么方法讓我確保我的方法能處理完成后再停止??
進(jìn)程停止時(shí)AsyncTcpConnection 會(huì)自動(dòng)關(guān)閉。
stop時(shí),如果進(jìn)程在處理業(yè)務(wù)則等待,最長等待2秒,如果2秒內(nèi)業(yè)務(wù)還沒處理完就強(qiáng)制退出,AsyncTcpConnection也會(huì)關(guān)閉。
謝謝,是這樣的,我這邊的要求是:對(duì)方要求我‘優(yōu)雅’的退出,也就是worker stop的時(shí)候,我需要先告訴對(duì)方服務(wù)器我要關(guān)閉了(類似登出賬號(hào)),然后再關(guān)閉AsyncTcpConnection。
但是現(xiàn)在基本一STOP直接就關(guān)閉了。有沒有什么辦法讓他確保我做了一些事情后 關(guān)閉
想要有個(gè)交互的過程,大概要1秒左右,STOP時(shí), AsyncTcpConnection發(fā)送到對(duì)方: 我要退出 對(duì)方回應(yīng):OK
然后解除連接
目前情況是發(fā)送應(yīng)該是發(fā)送過去了,但是ONMESSAGE沒有收到信息
在onWorkerStop里使用AsyncTcpConnection發(fā)送我要退出,收到回應(yīng)后調(diào)用Worker::stopAll();來關(guān)閉連接。停止的使用是用優(yōu)雅停止命令 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,接收對(duì)方優(yōu)雅停止的響應(yīng)OK
$con->onMessage = function($con, $data){
if ($data === 'OK') {
exit(0);
}
};
$con->send('我要退出的包');
};
優(yōu)雅停止命令 php start.php stop -g