我運行在服務器端這個循環:的WebSocket - PHP推入數據
while (true) {
$changed = $this->sockets;
socket_select($changed, $write = NULL, $except = NULL, NULL);
foreach($changed AS $socket) {
if($socket == $this->master) {
$client = socket_accept($this->master);
if($client < 0) {
echo "socket_accept failed";
continue;
} else {
$this->connect($client);
}
} else {
$bytes = @socket_recv($socket, $buffer, 2048, 0);
if($bytes == 0) {
$this->close($socket);
} else {
$user = $this->get_user_by_socket($socket);
if(!$user->handshake) {
$this->do_handshake($user, $buffer);
} else {
$this->process($user, $buffer);
}
}
}
}
}
基本上它等待什麼插座內執行,可以發送到所有客戶端的任何操作之前被改變,或者僅僅是個人客戶。我想要做的是能夠在一段時間不活動之後將數據推送給客戶......像遊戲中的倒數計時器一樣說。因此,如果用戶沒有任何操作,5秒後自動爲該用戶發送操作。我會怎麼做呢?我嘗試過使用存儲在其中的time(),然後檢查數學運算的last_update,但是,只有在插槽發生更改時纔會運行我在while(true)循環內執行的任何操作,該更改來自用戶結束...
我想我只是超級失落。 :)
謝謝!
什麼ü要我們回答?!?!? – kritya
我認爲OP想知道如何去執行 –