您可以使用 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;
}
}
}
?>