• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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

    参见

    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++;
    }
    ?>
    

    上篇:msg_get_queue()

    下篇:msg_receive()