我創(chuàng)建tcp后 里面循環(huán)發(fā)送某些指令, 想順便send返回一些進(jìn)度條的信息給前段, 但是我發(fā)現(xiàn)是統(tǒng)一返回的, 是閉包結(jié)束后統(tǒng)一send 的嗎, 或者是有什么解決辦法?
感覺(jué) $con->close()
不能for放循環(huán)里吧,第一次循環(huán)就close了,那下次循環(huán)send就沒(méi)有意義了,發(fā)不出去了
業(yè)務(wù)代碼和workerman內(nèi)核是運(yùn)行在同一個(gè)進(jìn)程的。如果workerman內(nèi)核得不到運(yùn)行控制權(quán),就無(wú)法完成握手、發(fā)送數(shù)據(jù)這些操作。所以不要用運(yùn)行sleep,使用定時(shí)器來(lái)代替sleep。正確的代碼類似這樣
<?php
require 'vendor/autoload.php';
use Workerman\Worker;
use Workerman\Timer;
$worker = new Worker('websocket://127.0.0.1:8000');
$worker->onWebSocketConnect = function($con){
for ($i=1; $i<=5; $i++) {
Timer::add($i, function()use($con){
$con->send('1');
}, null, false);
}
};
Worker::runAll();
那我在創(chuàng)建異步的 $con->onConnect = function($con)use(){} 閉包內(nèi)循環(huán) $con->send() 我為什么感覺(jué)只能發(fā)送第一條? for(){ $con->send(str)} $con->close();這樣的
我在tcp異步的閉包 循環(huán) for(){ $con->send(str)} $con->close();一條也發(fā)不出去, for(){ $con->send(str);$con->close();}這樣反而可以發(fā)出去一條.....有方法解決嗎
昨天我那個(gè) 把發(fā)送socekt跟異步tcp的 放進(jìn)定時(shí)器 都可以循環(huán)發(fā)出了, 這種方案可行嗎? 或者又什么更好的建議?