PHP 5.6.16 is available


(PHP 4 >= 4.0.4, PHP 5)

shmop_readLit des données à partir d'un bloc


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

shmop_read() lit une chaîne dans un bloc de mémoire partagée.

Liste de paramètres


L'identifiant du bloc mémoire partagé, créé par la fonction shmop_open()


Position depuis laquelle on doit commencer à lire


Le nombre d'octets à lire

Valeurs de retour

Retourne les données ou FALSE si une erreur survient.


Exemple #1 Lit un bloc de mémoire partagée


Cet exemple lit 50 octets dans le bloc de mémoire partagée et les place dans $shm_data.

Voir aussi

add a note add a note

User Contributed Notes 4 notes

Craig Manley
10 years ago
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;
macmaster at pobox dot com
14 years ago
When i need to read the whole string at that shm pointer, setting the count parameter to zero (0) seems work for me.
slavapl at mailandnews dot com
14 years ago
Also you can use the shmop_size() function to determine the block size.
Milan Cvejic
6 years ago
You should always serialize data written in shared memory.
And when you are reading data you should always unserialize.


= 'test';
$shm_bytes_written = shmop_write($shm_id, serialize($data), 0);
$shm_data = unserialize(shmop_read($shm_id, 0, $shm_bytes_written));
To Top