win32_start_service_ctrl_dispatcher
  
   スクリプトを SCM に登録し、指定した名前でサービスとして稼動させる
   ようにする
  
  
 
  説明
  
   void win32_start_service_ctrl_dispatcher(string $name, bool $gracefulMode = true)
  
  
   サービスが開始したら、サービスプロセスで行わなければならないことは次のふたつです。
   まず最初は、サービスが実行中であることをサービスコントロールマネージャに通知することです。
   これは、win32_set_service_status に定数
   WIN32_SERVICE_RUNNING を指定してコールすれば実現できます。
   サービスが実際に動き出すまでに何らかの長い処理を要する場合は、定数
   WIN32_SERVICE_START_PENDING を使うこともできます。
   もうひとつは、常にサービスコントロールマネージャにチェックインし続け、
   サービスをいつ終了させるべきかを確認することです。
   これは、定期的に win32_get_last_control_message
   をコールして戻り値を適切に処理することで実現できます。
  
  警告
   
    0.2.0 以降では、この関数は "cli" SAPI でのみ動作します。
    他の SAPI では、この関数は無効になっています。
   
   
  
 
  パラメータ
  
   
    
     - 
name
- 
      
       サービスの短い名前。win32_create_service
       で登録されたもの。
       
- 
gracefulMode
- 
      
       trueの場合、graceful に終了します。falseの場合、エラーで終了します。
       詳細は win32_set_service_exit_mode を参照ください。
 
 
 
  戻り値
  
   値を返しません。
  
  
    バージョン 1.0.0 より前では、成功した場合に WIN32_NO_ERROR を返していました。パラメータに問題がある場合は false、失敗した場合は Win32 エラーコード を返します。
  
  
 
  エラー / 例外
  
   バージョン 1.0.0 より前では、
   SAPI が "cli" でない場合、
   この関数は E_ERROR レベルのエラーを発生させていました。
  
  
   バージョン 1.0.0 以降では、
   SAPI が "cli" でない場合、
   Win32ServiceException がスローされます。
  
  
 
 
  例
  
   
    例1 win32_start_service_ctrl_dispatcher の例
    
     サービスが SCM で実行されているかどうかを調べます。
    
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
  die("I'm probably not running under the service control manager");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// このサービスを処理するための、何らかの長い処理をします
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
  # ここでなんらかの処理をします。1 回のループに 30 秒以上かからない
  # ように心がけてください。
}
?>
 
    
  
  
 
  参考
  
   
    - win32_set_service_status
- win32_get_last_control_message
- win32_set_service_exit_mode
- win32_set_service_exit_code
- Win32 エラーコード