您可以分別使用 shift/unshift 和 push/pop 來執行 dequeue/undequeue 和 queue/unqueue。對於使用 sockets 的應用程式來說非常方便,因為您可能在嘗試傳送資料之前不知道無法傳送資料。
例如,這是一個應用程式函式,如果 socket_write 指示它沒有寫入提供的資料的全部內容,它將取消佇列剩餘的資料。
<?php
函數 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;
}
}
}
?>