downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

win32_create_service> <win32_ps_stat_proc
[edit] Last updated: Mon, 01 Nov 2010

view this page in

CLXXIII. win32service Functions

Einführung

The win32service extension is a Windows specific extension that allows PHP to communicate with the Service Control Manager to start, stop, register and unregister services, and even allows your PHP scripts to run as a service.

Anforderungen

Windows NT, Windows 2000, Windows XP or Windows Server 2003. Any version of windows derived from Windows NT should be compatible.

Installation

Prozedur 17. Installing from PECL

  1. You can download php_win32service.dll from http://snaps.php.net/win32/. Choose the PECL_X_X folder that matches you PHP version.

  2. Copy the php_win32service.dll into your extension_dir.

  3. Load the extension from your php.ini

    
    extension=php_win32service.dll
    
          

Beispiele

Beispiel 2226. Registering a PHP script to run as a service

<?php
win32_create_service
(array(
       
'service' => 'dummyphp',                 # the name of your service
       
'display' => 'sample dummy PHP service', # description
       
'params' => 'c:\path\to\script.php run', # path to the script and parameters
   
));
?>

Beispiel 2227. Unregistering a service

<?php
win32_delete_service
('dummyphp');
?>

Beispiel 2228. Running as a service

<?php
if ($argv[1] == 'run') {
 
win32_start_service_ctrl_dispatcher('dummyphp');

  while (
WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
   
# do your work here.
    # try not to take up more than 30 seconds before going around the loop
    # again
 
}
}
?>

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

WIN32_SERVICE_CONTROL_CONTINUE (integer)
WIN32_SERVICE_CONTROL_INTERROGATE (integer)
WIN32_SERVICE_CONTROL_PAUSE (integer)
WIN32_SERVICE_CONTROL_STOP (integer)
WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE (integer)
WIN32_SERVICE_CONTROL_POWEREVENT (integer)
WIN32_SERVICE_CONTROL_SESSIONCHANGE (integer)
WIN32_ERROR_CALL_NOT_IMPLEMENTED (integer)
WIN32_NO_ERROR (integer)
WIN32_SERVICE_RUNNING (integer)
WIN32_SERVICE_STOPPED (integer)
WIN32_SERVICE_STOP_PENDING (integer)
WIN32_SERVICE_WIN32_OWN_PROCESS (integer)
WIN32_SERVICE_INTERACTIVE_PROCESS (integer)
WIN32_SERVICE_STOPPED (integer)
WIN32_SERVICE_START_PENDING (integer)
WIN32_SERVICE_STOP_PENDING (integer)
WIN32_SERVICE_RUNNING (integer)
WIN32_SERVICE_CONTINUE_PENDING (integer)
WIN32_SERVICE_PAUSE_PENDING (integer)
WIN32_SERVICE_PAUSED (integer)
WIN32_SERVICE_ACCEPT_NETBINDCHANGE (integer)
WIN32_SERVICE_ACCEPT_PARAMCHANGE (integer)
WIN32_SERVICE_ACCEPT_PAUSE_CONTINUE (integer)
WIN32_SERVICE_ACCEPT_SHUTDOWN (integer)
WIN32_SERVICE_ACCEPT_STOP (integer)
WIN32_SERVICE_ACCEPT_HARDWAREPROFILECHANGE (integer)
WIN32_SERVICE_ACCEPT_POWEREVENT (integer)
WIN32_SERVICE_ACCEPT_SESSIONCHANGE (integer)
WIN32_SERVICE_FILE_SYSTEM_DRIVER (integer)
WIN32_SERVICE_KERNEL_DRIVER (integer)
WIN32_SERVICE_WIN32_SHARE_PROCESS (integer)
WIN32_SERVICE_RUNS_IN_SYSTEM_PROCESS (integer)

Inhaltsverzeichnis

win32_create_service — Creates a new service entry in the SCM database
win32_delete_service — Deletes a service entry from the SCM database
win32_get_last_control_message — Returns the last control message that was sent to this service
win32_query_service_status — Queries the status of a service
win32_set_service_status — Update the service status
win32_start_service_ctrl_dispatcher — Registers the script with the SCM, so that it can act as the service with the given name
win32_start_service — Starts a service
win32_stop_service — Stops a service


add a note add a note User Contributed Notes win32service Functions
brian dot ngure at gmail dot com 30-Apr-2010 03:03
An example of how it should be done:

<?php

class TestClass {
    private
$args;

    function
__construct($arg) {
       
$this->args = $arg;
       
$this->run();
    }

    private function
run() {
        if (
$this->args == 'run') {
           
win32_start_service_ctrl_dispatcher('test_service');

            while (
WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
               
# do your work here.
                # try not to take up more than 30 seconds before going around the loop
                # again
           
}
        }
    }
}

$object = new TestClass($argv[1]);

?>
me at sylvain tiret besse point fr 20-Nov-2007 12:45
Just to help a little, the service control command must be in the first script called. If you try to type this portion of code in a separate file and include it, the SCM will not get the controls.
example :

- file1.inc :
<?PHP
class MyClass{
 
 function
__construct() {

   
$x = win32_start_service_ctrl_dispatcher('service');

   
    while (
WIN32_SERVICE_CONTROL_STOP!=win32_get_last_control_message()){
       
//your code
 
}
}
?>

- service.php :
<?PHP
include("file1.inc");
$object = new MyClass();

?>

WON'T WORK !

 
show source | credits | sitemap | contact | advertising | mirror sites