<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.win32service.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.win32-start-service-ctrl-dispatcher.php',
    1 => 'win32_start_service_ctrl_dispatcher',
    2 => 'Registra un script con SCM, por lo que puede ser interpretado como un servicio con el nombre dado',
  ),
  'up' => 
  array (
    0 => 'ref.win32service.php',
    1 => 'Funciones win32service',
  ),
  'prev' => 
  array (
    0 => 'function.win32-start-service.php',
    1 => 'win32_start_service',
  ),
  'next' => 
  array (
    0 => 'function.win32-stop-service.php',
    1 => 'win32_stop_service',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/win32service/functions/win32-start-service-ctrl-dispatcher.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.win32-start-service-ctrl-dispatcher" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">win32_start_service_ctrl_dispatcher</h1>
  <p class="verinfo">(PECL win32service &gt;=0.1.0)</p><p class="refpurpose"><span class="refname">win32_start_service_ctrl_dispatcher</span> &mdash; <span class="dc-title">Registra un script con SCM, por lo que puede ser interpretado como un servicio con el nombre dado</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.win32-start-service-ctrl-dispatcher-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <span class="methodname"><strong>win32_start_service_ctrl_dispatcher</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$gracefulMode</code><span class="initializer"> = true</span></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

  <p class="para rdfs-comment">
   Cuando se ejecuta a través del Gestionador de Control de Servicio, un proceso de
   servicio debe &quot;registrarse&quot; con él para establecer un servicio de supervisión y
   comunicación eficiente. Esta función realiza el registro iniciando un hilo para
   manejar las comunicaciones de bajo nivel con el Gestionador de Control de Servicio.
  </p>
  <p class="para">
   Una vez iniciado, el proceso del servicio debe hacer dos cosas. La primera es
   informar al Gestionador de Control de Servicio que el servicio está en ejecución. La segunda
   es llamar a la función <span class="function"><a href="function.win32-set-service-status.php" class="function">win32_set_service_status()</a></span> con la constante
   <strong><code><a href="win32service.constants.php#constant.win32-service-running">WIN32_SERVICE_RUNNING</a></code></strong>. Si necesita lanzar procesos largos antes
   de que el servicio se inicie, puede usar la constante
   <strong><code><a href="win32service.constants.php#constant.win32-service-start-pending">WIN32_SERVICE_START_PENDING</a></code></strong>. La segunda es continuar
   verificando con el Gestionador de Control de Servicio para determinar si el servicio se
   detiene o no. Esto implica llamar periódicamente a la función
   <span class="function"><a href="function.win32-get-last-control-message.php" class="function">win32_get_last_control_message()</a></span> y tratar el código devuelto.
  </p>

  <div class="caution"><strong class="caution">Precaución</strong>
   <p class="para">
    Desde la versión 0.2.0, esta función solo funciona en línea de
    comandos. Está deshabilitada en otros casos.
   </p>
  </div>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.win32-start-service-ctrl-dispatcher-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">name</code></dt>
     <dd>
      <p class="para">
       El nombre corto del servicio, como se registra con
       <span class="function"><a href="function.win32-create-service.php" class="function">win32_create_service()</a></span>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">gracefulMode</code></dt>
     <dd>
      <p class="para">
       <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> para la salida correcta. <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> para la salida con error. Consulte
       <span class="function"><a href="function.win32-set-service-exit-mode.php" class="function">win32_set_service_exit_mode()</a></span> para más detalles.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.win32-start-service-ctrl-dispatcher-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   No se retorna ningún valor.
  </p>
  <p class="para">
    Antes de la versión 1.0.0, retornaba <strong><code><a href="win32service.constants.php#constant.win32-no-error">WIN32_NO_ERROR</a></code></strong> en caso de éxito, <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si hay un problema con los parámetros o un <a href="win32service.constants.php#win32service.constants.errors" class="link">Código de Error Win32</a> en caso de fallo.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.win32-start-service-ctrl-dispatcher-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="para">
   Antes de la versión 1.0.0, si esta función se utiliza fuera del SAPI <code class="literal">&quot;cli&quot;</code>, se emitirá
   un error <strong><code><a href="errorfunc.constants.php#constant.e-error">E_ERROR</a></code></strong>.
  </p>
  <p class="para">
   A partir de la versión 1.0.0, lanzará una
   <span class="classname"><a href="class.win32serviceexception.php" class="classname">Win32ServiceException</a></span> si el SAPI no es
   <code class="literal">&quot;cli&quot;</code>
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.win32-start-service-ctrl-dispatcher-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>PECL win32service 1.0.0</td>
       <td>
        Lanzará una <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> si un argumento es inválido,
        anteriormente <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> era retornado.
       </td>
      </tr>

      <tr>
       <td>PECL win32service 1.0.0</td>
       <td>
        Lanzará una <span class="classname"><a href="class.win32serviceexception.php" class="classname">Win32ServiceException</a></span> en caso de error,
        anteriormente un
        <a href="win32service.constants.php#win32service.constants.errors" class="link">Código de error Win32</a>
        era retornado.
       </td>
      </tr>

      <tr>
       <td>PECL win32service 1.0.0</td>
       <td>
        El tipo de retorno es ahora <span class="type"><span class="type"><a href="language.types.void.php" class="type void">void</a></span></span>, anteriormente era <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>.
       </td>
      </tr>

      <tr>
       <td>PECL win32service 0.4.0</td>
       <td>
        Se añadió el argumento <code class="parameter">gracefulMode</code>.
       </td>
      </tr>

      <tr>
       <td>PECL win32service 0.2.0</td>
       <td>
        Esta función solo funciona en el SAPI <code class="literal">&quot;cli&quot;</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.win32-start-service-ctrl-dispatcher-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>win32_start_service_ctrl_dispatcher()</strong></span></strong></p>
    <div class="example-contents"><p>
     Verifica si el servicio funciona bajo SCM.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (!</span><span style="color: #0000BB">win32_start_service_ctrl_dispatcher</span><span style="color: #007700">(</span><span style="color: #DD0000">'dummyphp'</span><span style="color: #007700">)) {<br />  die(</span><span style="color: #DD0000">"Probablemente no estoy funcionando bajo el Gestionador de Control de Servicio"</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">win32_set_service_status</span><span style="color: #007700">(</span><span style="color: #0000BB">WIN32_SERVICE_START_PENDING</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Algunos procesos largos a recuperar mientras el servicio funciona.<br /><br /></span><span style="color: #0000BB">win32_set_service_status</span><span style="color: #007700">(</span><span style="color: #0000BB">WIN32_SERVICE_RUNNING</span><span style="color: #007700">);<br /><br />while (</span><span style="color: #0000BB">WIN32_SERVICE_CONTROL_STOP </span><span style="color: #007700">!= </span><span style="color: #0000BB">win32_get_last_control_message</span><span style="color: #007700">()) {<br />  </span><span style="color: #FF8000"># Realice su trabajo aquí.<br />  # Intente no tomar más de 30 segundos antes de devolver.<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.win32-start-service-ctrl-dispatcher-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.win32-set-service-status.php" class="function" rel="rdfs-seeAlso">win32_set_service_status()</a> - Actualiza el estado de un servicio</span></li>
    <li><span class="function"><a href="function.win32-get-last-control-message.php" class="function" rel="rdfs-seeAlso">win32_get_last_control_message()</a> - Devuelve el &uacute;ltimo mensaje de control que ha sido enviado a este servicio</span></li>
    <li><span class="function"><a href="function.win32-set-service-exit-mode.php" class="function" rel="rdfs-seeAlso">win32_set_service_exit_mode()</a> - Define o devuelve el modo de salida para el servicio en ejecuci&oacute;n</span></li>
    <li><span class="function"><a href="function.win32-set-service-exit-code.php" class="function" rel="rdfs-seeAlso">win32_set_service_exit_code()</a> - Define o devuelve el c&oacute;digo de salida para el servicio en ejecuci&oacute;n</span></li>
    <li>Los <a href="win32service.constants.php#win32service.constants.errors" class="link">códigos de error Win32</a></li>
   </ul>
  </p>
 </div>


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