msg_queue_exists()
(PHP 5 >= 5.3.0, PHP 7)
Check whether a message queue exists
说明
msg_queue_exists(int $key): bool
Checks whether the message queue$keyexists.
参数
- $key
Queue key.
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
参见
msg_remove_queue()
Destroy a message queuemsg_receive()
Receive a message from a message queuemsg_stat_queue()
Returns information from the message queue data structure
A simple script for checking what message queues are in use on a [presumably new] server environment. Run with php-cli <?php $k = 0; while (true) { echo $key,"...\r"; if (msg_queue_exists($key)) echo "\r",$key,'::Exists',"\n"; $key++; } ?>
This function is creating new queue (and returning true) if you set NULL into $key variable. <?php $isQueueCreated = msg_queue_exists(NULL); print $isQueueCreated ? "WTF??!" : "ok, everything is fine.."; ?> WTF??! # ipcs -q 0x00000000 173047808 root 0 0 0
A workaround for those not yet running 5.3 on *nix: <?php function queue_exists($key) { if(function_exists("msg_queue_exists")) { return msg_queue_exists($key); } else { $aQueues = array(); exec("ipcs -q | grep \"^[0-9]\" | cut -d \" \" -f 1", $aQueues); if(in_array($key,$aQueues)) return true; else return false; } } ?> Maybe a bit slow and kludgey, but it works.
Following code will do the job: <?php $key = 0; while (true) { echo $key,"...\r"; if (msg_queue_exists($key)) echo "\r",$key,'::Exists',"\n"; $key++; } ?>