- PHP 手册
- 函数参考
- 进程控制扩展
- Semaphore
- Semaphore 函数
msg_queue_exists
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
msg_queue_exists — Check whether a message queue exists
说明
msg_queue_exists(int$key
): bool
Checks whether the message queue key
exists.
参数
-
key
-
Queue key.
返回值
成功时返回 true
, 或者在失败时返回 false
。
参见
- msg_remove_queue() - Destroy a message queue
- msg_receive() - Receive a message from a message queue
- msg_stat_queue() - Returns information from the message queue data structure
User Contributed Notes 4 notes
up down 1 michael dot hajuu at gmail dot com ¶11 years ago
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++;
}
?>
up
down
1
klatovsky at 2u2 dot cz ¶3 years ago
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
up
down
0
jaredm ¶12 years ago
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.
up
down
-2
tkuschel at loytec dot com ¶9 years ago
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++;
}
?>
add a note
官方地址:https://www.php.net/manual/en/function.msg-queue-exists.php