您可以使用 shift/unshift 和 push/pop 分别进行出队/入队和入队/出队操作。对于那些使用套接字的应用程序非常方便,在尝试发送数据之前,您可能不知道是否可以发送数据。
例如,这是一个函数,用于如果 socket_write 指示它没有写入所提供数据的全部内容,则该应用程序将对剩余数据进行出队操作。
<?php
function processSendQueue($socket, $sendQueue) {
while (!$sendQueue->isEmpty()) {
$senditem = $sendQueue->shift();
$rtn = socket_write($socket, $senditem);
if ($rtn === false) {
$sendQueue->unshift($senditem);
throw new exception("发送错误: " . socket_last_error($socket));
return;
}
if ($rtn < strlen($senditem) {
$sendQueue->unshift(substr($senditem, $rtn);
break;
}
}
}
?>