<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.mongodb-driver-readpreference.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'mongodb-driver-readpreference.construct.php',
    1 => 'MongoDB\\Driver\\ReadPreference::__construct',
    2 => 'Cria uma nova prefer&ecirc;ncia de leitura',
  ),
  'up' => 
  array (
    0 => 'class.mongodb-driver-readpreference.php',
    1 => 'MongoDB\\Driver\\ReadPreference',
  ),
  'prev' => 
  array (
    0 => 'mongodb-driver-readpreference.bsonserialize.php',
    1 => 'MongoDB\\Driver\\ReadPreference::bsonSerialize',
  ),
  'next' => 
  array (
    0 => 'mongodb-driver-readpreference.gethedge.php',
    1 => 'MongoDB\\Driver\\ReadPreference::getHedge',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/mongodb/mongodb/driver/readpreference/construct.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mongodb-driver-readpreference.construct" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">MongoDB\Driver\ReadPreference::__construct</h1>
  <p class="verinfo">(mongodb &gt;=1.0.0)</p><p class="refpurpose"><span class="refname">MongoDB\Driver\ReadPreference::__construct</span> &mdash; <span class="dc-title">Cria uma nova preferência de leitura</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-mongodb-driver-readpreference.construct-description">
  <h3 class="title">Descrição</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>MongoDB\Driver\ReadPreference::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$mode</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$tagSets</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$options</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>)</div>

  <p class="para rdfs-comment">
   Constrói um novo <span class="classname"><a href="class.mongodb-driver-readpreference.php" class="classname">MongoDB\Driver\ReadPreference</a></span>, que
   é um objeto de valor imutável.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-mongodb-driver-readpreference.construct-parameters">
  <h3 class="title">Parâmetros</h3>
  <dl>
   
    <dt><code class="parameter">mode</code></dt>
    <dd>
     <p class="para">
      <table class="doctable table">
       <caption><strong>Modo de preferência de leitura</strong></caption>
       
        <thead>
         <tr>
          <th>Valor</th>
          <th>Descrição</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><code class="literal">&quot;primary&quot;</code></td>
          <td>
           <p class="para">
            Todas as operações são lidas do conjunto de réplicas primário atual. Esta é
            a preferência de leitura padrão do MongoDB.
           </p>
          </td>
         </tr>

         <tr>
          <td><code class="literal">&quot;primaryPreferred&quot;</code></td>
          <td>
           <p class="para">
            Na maioria das situações, as operações são lidas a partir dos membros primários, mas se não
            estiver disponível, as operações são lidas a partir dos membros secundários.
           </p>
          </td>
         </tr>

         <tr>
          <td><code class="literal">&quot;secondary&quot;</code></td>
          <td>
           <p class="para">
            Todas as operações são lidas nos membros secundários do conjunto de réplicas.
           </p>
          </td>
         </tr>

         <tr>
          <td><code class="literal">&quot;secondaryPreferred&quot;</code></td>
          <td>
           <p class="para">
            Na maioria das situações, as operações são lidas a partir de membros secundários, mas se nenhum
            membro secundário estiver disponível, as operações são lidas a partir do primário.
           </p>
          </td>
         </tr>

         <tr>
          <td><code class="literal">&quot;nearest&quot;</code></td>
          <td>
           <p class="para">
            Operações lidas do membro do conjunto de réplicas com a menor
            latência de rede, independentemente do tipo do membro.
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
   
    <dt><code class="parameter">tagSets</code></dt>
    <dd>
     <p class="para">
      Os conjuntos de tags permitem direcionar operações de leitura para membros específicos de um
      conjunto de réplicas. Este parâmetro deve ser um array de arrays associativos, cada
      um contendo zero ou mais pares chave/valor. Ao selecionar um servidor para
      uma operação de leitura, o driver tenta selecionar um nó que tenha todas as tags em um
      conjunto (ou seja, o array associativo de pares chave/valor). Se a seleção falhar,
      o driver tentará conjuntos subsequentes. Um conjunto de tags vazio
      (<code class="literal">array()</code>) corresponderá a qualquer nó e pode ser usado como
      substituto.
     </p>
     <p class="para">
      Tags não são compatíveis com o modo <code class="literal">&quot;primary&quot;</code> e,
      em geral, só se aplicam ao selecionar um membro secundário de um conjunto para uma
      operação de leitura. No entanto, o modo <code class="literal">&quot;nearest&quot;</code>, quando
      combinado com um conjunto de tags, seleciona o membro correspondente com a menor
      latência de rede. Este membro pode ser um primário ou um secundário.
     </p>
    </dd>
   
   
    <dt><code class="parameter">options</code></dt>
    <dd>
     <p class="para">
      <table class="doctable table">
       <caption><strong>Opções</strong></caption>
       
        <thead>
         <tr>
          <th>Opção</th>
          <th>Tipo</th>
          <th>Descrição</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>hedge</td>
          <td><span class="type"><span class="type"><a href="language.types.object.php" class="type object">object</a></span>|<span class="type"><a href="language.types.array.php" class="type array">array</a></span></span></td>
          <td>
           <p class="para">Especifica se devem ser usadas <a href="https://www.mongodb.com/docs/manual/core/sharded-cluster-query-router/#mongos-hedged-reads" class="link external">&raquo;&nbsp;leituras protegidas</a>, que são suportadas pelo MongoDB 4.4+ para consultas fragmentadas.</p>
           <p class="para">
            As leituras protegidas do servidor estão disponíveis para todas as preferências de leitura não primárias
            e são habilitadas por padrão ao usar o modo <code class="literal">&quot;nearest&quot;</code>.
            Esta opção permite ativar explicitamente leituras protegidas pelo servidor para
            preferências de leitura não primárias, especificando
            <code class="literal">[&#039;enabled&#039; =&gt; true]</code> ou desabilitando explicitamente
            leituras protegidas pelo servidor para a preferência de leitura <code class="literal">&quot;nearest&quot;</code>
            especificando <code class="literal">[&#039;enabled&#039; =&gt; false]</code>.
           </p>
          </td>
         </tr>

         <tr>
          <td>maxStalenessSeconds</td>
          <td><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></td>
          <td>
           <p class="para">
            Especifica um atraso máximo de replicação, ou &quot;inatividade&quot;, para leituras de
            secundários. Quando a inatividade estimada de um secundário excede
            esse valor, o driver deixa de usá-lo para operações de leitura.
           </p>
           <p class="para">
            Se especificada, a inatividade máxima deve ser um número inteiro de 32 bits com sinal,
            maior ou igual a
            <strong><code><a href="class.mongodb-driver-readpreference.php#mongodb-driver-readpreference.constants.smallest-max-staleness-seconds">MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS</a></code></strong>.
           </p>
           <p class="para">
            O padrão é
            <strong><code><a href="class.mongodb-driver-readpreference.php#mongodb-driver-readpreference.constants.no-max-staleness">MongoDB\Driver\ReadPreference::NO_MAX_STALENESS</a></code></strong>,
            o que significa que o driver não considerará o atraso de um secundário
            ao escolher para onde direcionar uma operação de leitura.
           </p>
           <p class="para">
            Esta opção não é compatível com o modo <code class="literal">&quot;primary&quot;</code>.
            A especificação de uma inatividade máxima também exige que todas as instâncias
            do MongoDB na implantação usem o MongoDB 3.4+. Uma exceção será
            lançada no momento da execução se alguma instância do MongoDB na implantação
            for de uma versão de servidor mais antiga.
           </p>
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 errors" id="refsect1-mongodb-driver-readpreference.construct-errors">
  <h3 class="title">Erros/Exceções</h3>
  <ul class="simplelist">
   <li>Lança uma exceção <span class="classname"><a href="class.mongodb-driver-exception-invalidargumentexception.php" class="classname">MongoDB\Driver\Exception\InvalidArgumentException</a></span> em caso de erro ao analisar argumentos.</li>
   <li>Lança uma <span class="classname"><a href="class.mongodb-driver-exception-invalidargumentexception.php" class="classname">MongoDB\Driver\Exception\InvalidArgumentException</a></span> se <code class="parameter">mode</code> for inválido.</li>
   <li>Lança uma <span class="classname"><a href="class.mongodb-driver-exception-invalidargumentexception.php" class="classname">MongoDB\Driver\Exception\InvalidArgumentException</a></span> se <code class="parameter">tagSets</code> for fornecido para uma preferência de leitura primária ou estiver malformado (ou seja, não é uma array de zero ou mais documentos).</li>
   <li>Lança uma <span class="classname"><a href="class.mongodb-driver-exception-invalidargumentexception.php" class="classname">MongoDB\Driver\Exception\InvalidArgumentException</a></span> se a opção <code class="literal">&quot;maxStalenessSeconds&quot;</code> for fornecida para uma preferência de leitura primária ou estiver fora do intervalo.</li>
  </ul>
 </div>


 <div class="refsect1 changelog" id="refsect1-mongodb-driver-readpreference.construct-changelog">
  <h3 class="title">Registro de Alterações</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versão</th>
       <th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>PECL mongodb 2.0.0</td>
       <td>
        PAssar um <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> para o argumento <code class="parameter">mode</code>
        não é mais suportado.
       </td>
      </tr>

      <tr>
       <td>PECL mongodb 1.20.0</td>
       <td>
        Passar um <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> no parâmetro <code class="parameter">mode</code>
        foi <em>DESCONTINUADO</em>.
       </td>
      </tr>

      <tr>
       <td>PECL mongodb 1.8.0</td>
       <td>
        Adcionada a opção <code class="literal">&quot;hedge&quot;</code>.
       </td>
      </tr>

      <tr>
       <td>PECL mongodb 1.3.0</td>
       <td>
        <p class="para">
         O parâmetro <code class="parameter">mode</code> agora aceita um valor de string,
         que é consistente com a opção URI <code class="literal">&quot;readPreference&quot;</code>
         para <span class="function"><a href="mongodb-driver-manager.construct.php" class="function">MongoDB\Driver\Manager::__construct()</a></span>.
        </p>
       </td>
      </tr>

      <tr>
       <td>PECL mongodb 1.2.0</td>
       <td>
        <p class="para">
         Adicionado um terceiro parâmetro <code class="parameter">options</code>, que suporta
         a opção <code class="literal">&quot;maxStalenessSeconds&quot;</code>.
        </p>
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-mongodb-driver-readpreference.construct-examples">
  <h3 class="title">Exemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Exemplo #1 Exemplo de <span class="function"><strong>MongoDB\Driver\ReadPreference::__construct()</strong></span></strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/* Prefere um nó secundário, mas volta para um nó primário. */<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new </span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">(</span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">::</span><span style="color: #0000BB">SECONDARY_PREFERRED</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">/* Prefere um nó na central de dados de Nova Iorque com a latência mais baixa. */<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new </span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">(</span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">::</span><span style="color: #0000BB">NEAREST</span><span style="color: #007700">, [[</span><span style="color: #DD0000">'dc' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'ny'</span><span style="color: #007700">]]));<br /><br /></span><span style="color: #FF8000">/* Exige um nó secundário cujo atraso de replicação esteja dentro de dois minutos do primário */<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new </span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">(</span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">::</span><span style="color: #0000BB">SECONDARY</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, [</span><span style="color: #DD0000">'maxStalenessSeconds' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">120</span><span style="color: #007700">]));<br /><br /></span><span style="color: #FF8000">/* Habilita explicitamente leituras protegidas pelo servidor */<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(new </span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">(</span><span style="color: #0000BB">MongoDB\Driver\ReadPreference</span><span style="color: #007700">::</span><span style="color: #0000BB">SECONDARY</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, [</span><span style="color: #DD0000">'hedge' </span><span style="color: #007700">=&gt; [</span><span style="color: #DD0000">'enabled' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">true</span><span style="color: #007700">]]));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>O exemplo acima produzirá:</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">object(MongoDB\Driver\ReadPreference)#1 (1) {
  [&quot;mode&quot;]=&gt;
  string(18) &quot;secondaryPreferred&quot;
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  [&quot;mode&quot;]=&gt;
  string(7) &quot;nearest&quot;
  [&quot;tags&quot;]=&gt;
  array(1) {
    [0]=&gt;
    object(stdClass)#2 (1) {
      [&quot;dc&quot;]=&gt;
      string(2) &quot;ny&quot;
    }
  }
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  [&quot;mode&quot;]=&gt;
  string(9) &quot;secondary&quot;
  [&quot;maxStalenessSeconds&quot;]=&gt;
  int(120)
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  [&quot;mode&quot;]=&gt;
  string(9) &quot;secondary&quot;
  [&quot;hedge&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;enabled&quot;]=&gt;
    bool(true)
  }
}</pre>
</div>
   </div>
  </div>
 </div>



 <div class="refsect1 seealso" id="refsect1-mongodb-driver-readpreference.construct-seealso">
  <h3 class="title">Veja Também</h3>
  <ul class="simplelist">
   <li><a href="https://www.mongodb.com/docs/manual/core/read-preference/" class="link external">&raquo;&nbsp;Referência de Preferência de Leitura</a></li>
  </ul>
 </div>


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