note 83133 added to function.win32-set-service-status

From: Date: Mon, 12 May 2008 11:16:48 +0000
Subject: note 83133 added to function.win32-set-service-status
Groups: php.notes 
Request: Send a blank email to php-notes+get-139306@lists.php.net to get a copy of this message
On my Machine (Win XP SP2) the function "win32_get_last_control_message" never returns 4 so i will have to reply to 0 also. finally after mixing several examples i now have a version working woithout filling my event log with errors: <?php /* * PHP SAMPLE TEMPLATE */ /* * APP MAIN FUNCTION * Called each second after the function last time finished * Should not take longer than max 20 seconds to execute * ELSE you should call NTServiceResponder(); at least each 20 secs * WARNING: NTServiceResponder will exit; if there was a STOP request */ function Service_Main() { // YOU APPLICATION CODE HERE !!! sleep(1); // dummy something } /******************************************************************** * * SERVICE CONTROLLING * ********************************************************************/ $SERVICE_NAME = "phptestservice"; $SERVICE_DISPLAY = "Test Service with PHP"; // so u can get: $SERVICE_PATH_PARTS["dirname"] $SERVICE_PATH_PARTS["basename"] $SERVICE_PATH_PARTS["extension"] $SERVICE_PATH_PARTS = pathinfo(__FILE__); $SERVICE_PARAMS = " run"; if (!isset($argv[1])) { die("this application need to be installed as a service.\n run with param install"); } if ($argv[1] == 'install') { $x = win32_create_service(array( 'service' => $SERVICE_NAME, 'display' => $SERVICE_DISPLAY, 'params' => __FILE__ . $SERVICE_PARAMS, //'path' => $SERVICE_PATH_PARTS["dirname"] . '\php.exe' )); debug_zval_dump($x); exit; } else if ($argv[1] == 'uninstall') { $x = win32_delete_service('dummyphp'); debug_zval_dump($x); exit; } else if ($argv[1] != 'run') { die("bogus args, needs to run as service"); } // Connect to service dispatcher and notify that startup was successful if (!win32_start_service_ctrl_dispatcher($SERVICE_NAME)) die('Could not connect to service :'.$SERVICE_NAME); win32_set_service_status(WIN32_SERVICE_RUNNING); // Main Server Loop while (1) { NTServiceResponder(); // Main script goes here Service_Main(); sleep(1); // at least 1 sec delay per loop } win32_set_service_status(WIN32_SERVICE_STOPPED); /* * Response to NTServiceRequests */ function NTServiceResponder() { switch (win32_get_last_control_message()) { case 0: // PATCH for: seems never to go to 4 (WIN32_SERVICE_CONTROL_INTERROGATE) win32_set_service_status(WIN32_SERVICE_RUNNING); return TRUE; break; case WIN32_SERVICE_CONTROL_CONTINUE: return TRUE; // "Continue" case WIN32_SERVICE_CONTROL_INTERROGATE: win32_set_service_status(WIN32_SERVICE_RUNNING); return TRUE; // Respond with status case WIN32_SERVICE_CONTROL_STOP: win32_set_service_status(WIN32_SERVICE_STOPPED); exit; // Terminate script default: win32_set_service_status(WIN32_ERROR_CALL_NOT_IMPLEMENTED); // Add more cases to handle other service calls } return FALSE; } ?> ---- Server IP: 194.153.94.10 Probable Submitter: 84.74.160.175 ---- Manual Page -- http://www.php.net/manual/en/function.win32-set-service-status.php Edit -- https://master.php.net/note/edit/83133 Del: integrated -- https://master.php.net/note/delete/83133/integrated Del: useless -- https://master.php.net/note/delete/83133/useless Del: bad code -- https://master.php.net/note/delete/83133/bad+code Del: spam -- https://master.php.net/note/delete/83133/spam Del: non-english -- https://master.php.net/note/delete/83133/non-english Del: in docs -- https://master.php.net/note/delete/83133/in+docs Del: other reasons-- https://master.php.net/note/delete/83133 Reject -- https://master.php.net/note/reject/83133 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#139306) next »