• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • shmop_read()

    (PHP 4 >= 4.0.4, PHP 5, PHP 7)

    Read data from shared memory block

    说明

    shmop_read(resource $shmid,int $start,int $count): string

    shmop_read() will read a string from shared memory block.

    参数

    $shmid

    The shared memory block identifier created by shmop_open()

    $start

    Offset from which to start reading

    $count

    The number of bytes to read.0readsshmop_size($shmid)- $startbytes.

    返回值

    Returns the data 或者在失败时返回FALSE.

    更新日志

    版本说明
    7.0.0 The type of$shmidhas been changed from int to resource.

    范例

    Reading shared memory block

    <?php
    $shm_data = shmop_read($shm_id, 0, 50);
    ?>
    

    This example will read 50 bytes from shared memory block and place the data inside$shm_data.

    参见

    shmop_read() reads and returns the whole memory segment's data. This is not useful if you're just working with strings. If you need to read a string from shared memory, call str_from_mem() on the result of shmop_read(). Similarly when writing strings to memory (instead of binary data), null terminate your strings with str_to_nts() before passing the value on to shmop_write().
    function str_to_nts($value) {
     return "$value\0";
    }
    function str_from_mem(&$value) {
     $i = strpos($value, "\0");
     if ($i === false) {
      return $value;
     }
     $result = substr($value, 0, $i);
     return $result;
    }
    When i need to read the whole string at that shm pointer, setting the count parameter to zero (0) seems work for me.
    Also you can use the shmop_size() function to determine the block size.
    You should always serialize data written in shared memory.
    And when you are reading data you should always unserialize.
    <?php
    $data = 'test';
    $shm_bytes_written = shmop_write($shm_id, serialize($data), 0);
    $shm_data = unserialize(shmop_read($shm_id, 0, $shm_bytes_written));
    ?>
    

    上篇:shmop_open()

    下篇:shmop_size()