<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.sem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.msg-receive.php',
    1 => 'msg_receive',
    2 => 'Re&ccedil;oit un message depuis une file de messages',
  ),
  'up' => 
  array (
    0 => 'ref.sem.php',
    1 => 'Fonctions S&eacute;maphore',
  ),
  'prev' => 
  array (
    0 => 'function.msg-queue-exists.php',
    1 => 'msg_queue_exists',
  ),
  'next' => 
  array (
    0 => 'function.msg-remove-queue.php',
    1 => 'msg_remove_queue',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/sem/functions/msg-receive.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.msg-receive" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">msg_receive</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.3.0, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">msg_receive</span> &mdash; <span class="dc-title">Reçoit un message depuis une file de messages</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.msg-receive-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>msg_receive</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="class.sysvmessagequeue.php" class="type SysvMessageQueue">SysvMessageQueue</a></span> <code class="parameter">$queue</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$desired_message_type</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter reference">&$received_message_type</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$max_message_size</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter reference">&$message</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$unserialize</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$flags</code><span class="initializer"> = 0</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter reference">&$error_code</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="simpara">
   <span class="function"><strong>msg_receive()</strong></span> reçoit le premier message de la
   file <code class="parameter">queue</code>, le type est spécifié par
   <code class="parameter">desired_message_type</code>.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.msg-receive-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">queue</code></dt>
    <dd>
     <span class="simpara">
      Descripteur de ressource de file d&#039;attente de messages
     </span>
    </dd>
   
   
    <dt><code class="parameter">desired_message_type</code></dt>
    <dd>
     <span class="simpara">
      Si <code class="parameter">desired_message_type</code> vaut 0, le premier message
      de la file est retourné. Si <code class="parameter">desired_message_type</code> vaut
      plus que 0, alors le premier message de ce type sera retourné.
      Si <code class="parameter">desired_message_type</code> vaut moins que 0, le premier
      message de la file ayant un type inférieur ou égal à la valeur absolue
      de <code class="parameter">desired_message_type</code> sera retourné. Si aucun message
      ne correspond aux critères, le script attendra la venue d&#039;un tel
      message dans la file. Il est possible d&#039;éviter ce blocage en précisant l&#039;option
      <strong><code><a href="sem.constants.php#constant.msg-ipc-nowait">MSG_IPC_NOWAIT</a></code></strong> dans le paramètre
      <code class="parameter">flags</code>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">received_message_type</code></dt>
    <dd>
     <span class="simpara">
      Le type de message qui a été reçu sera stocké dans ce paramètre.
     </span>
    </dd>
   
   
    <dt><code class="parameter">max_message_size</code></dt>
    <dd>
     <span class="simpara">
      La taille maximale de message est fixée par
      <code class="parameter">max_message_size</code> ; si le message de la file est plus grand
      que cette taille, la fonction échouera (à moins que l&#039;on
      n&#039;utilise une option <code class="parameter">flags</code>, décrite ci-dessous).
     </span>
    </dd>
   
   
    <dt><code class="parameter">message</code></dt>
    <dd>
     <span class="simpara">
      Le message reçu sera stocké dans le paramètre <code class="parameter">message</code>,
      à moins qu&#039;il n&#039;y ait eu des erreurs de réception du message.
     </span>
    </dd>
   
   
    <dt><code class="parameter">unserialize</code></dt>
    <dd>
     <span class="simpara">
      Quand c&#039;est le cas, le message est traité comme s&#039;il avait été sérialisé
      avec le même mécanisme que le module de session. Le message sera alors
      désérialisé, puis retourné au script. Cela permettra de recevoir
      facilement des tableaux ou des objets complexes dans le script, émis
      par d&#039;autres scripts PHP, ou, lors de l&#039;utilisation de WDDX, depuis n&#039;importe
      quelle source compatible WDDX.
     </span>
     <span class="simpara">
      Si <code class="parameter">unserialize</code> vaut <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>,
      le message sera retourné intact, et sans modifier les valeurs binaires.
     </span>
    </dd>
   
   
    <dt><code class="parameter">flags</code></dt>
    <dd>
     <p class="para">
      Le paramètre <code class="parameter">flags</code> permet de passer des options
      pour configurer les appels msgrcv. Par défaut, il vaut 0, mais il est possible de
      spécifier une ou plusieurs options en les combinant avec l&#039;opérateur OR).
      <table class="doctable table">
       <caption><strong>Options de la fonction <span class="function"><strong>msg_receive()</strong></span></strong></caption>
       
        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sem.constants.php#constant.msg-ipc-nowait">MSG_IPC_NOWAIT</a></code></strong></td>
          <td>S&#039;il n&#039;y a pas de message du type
           <code class="parameter">desired_message_type</code>, retourne immédiatement
           et n&#039;attend pas. La fonction échouera et retournera un entier
           correspondant à <strong><code><a href="sem.constants.php#constant.msg-enomsg">MSG_ENOMSG</a></code></strong>.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sem.constants.php#constant.msg-except">MSG_EXCEPT</a></code></strong></td>
          <td>En utilisant cette option en combinaison avec
          un type <code class="parameter">desired_message_type</code> supérieur à 0, la
          fonction va lire le premier message qui n&#039;est pas
          du type demandé par <code class="parameter">desired_message_type</code>.</td>
         </tr>

         <tr>
          <td><strong><code><a href="sem.constants.php#constant.msg-noerror">MSG_NOERROR</a></code></strong></td>
          <td>
           Si le message est plus grand que <code class="parameter">max_message_size</code>,
           cette option va tronquer le message à la taille de
           <code class="parameter">max_message_size</code> et ne signalera pas d&#039;erreur.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
   
    <dt><code class="parameter">errorcode</code></dt>
    <dd>
     <span class="simpara">
      Si la fonction échoue, le paramètre optionnel
      <code class="parameter">error_code</code> sera défini à la valeur
      de la variable système errno.
     </span>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.msg-receive-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Cette fonction retourne <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en cas de succès ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si une erreur survient.
  </p>
  <p class="simpara">
   Lors de la réception réussie d&#039;un message, la file est mise à jour
   comme ceci : <code class="literal">msg_lrpid</code> prend la valeur de l&#039;identifiant
   de processus du processus appelant, <code class="literal">msg_qnum</code> est décrémenté de
   1 et <code class="literal">msg_rtime</code> prend la date et l&#039;heure courante.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.msg-receive-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">queue</code> attend désormais une <span class="classname"><a href="class.sysvmessagequeue.php" class="classname">SysvMessageQueue</a></span>;
       auparavant, une <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> était attendue.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.msg-receive-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.msg-remove-queue.php" class="function" rel="rdfs-seeAlso">msg_remove_queue()</a> - D&eacute;truit une file de messages</span></li>
   <li><span class="function"><a href="function.msg-send.php" class="function" rel="rdfs-seeAlso">msg_send()</a> - Envoie un message dans une file</span></li>
   <li><span class="function"><a href="function.msg-stat-queue.php" class="function" rel="rdfs-seeAlso">msg_stat_queue()</a> - Retourne des informations sur la file de messages</span></li>
   <li><span class="function"><a href="function.msg-set-queue.php" class="function" rel="rdfs-seeAlso">msg_set_queue()</a> - Modifie des informations dans la file de messages</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>