PHP.mk документација

win32_create_service

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.win32-create-service.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.win32-create-service.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
win32_create_service

Референца за `function.win32-create-service.php` со подобрена типографија и навигација.

function.win32-create-service.php

win32_create_service

(PECL win32service >=0.1.0)

win32_create_serviceКреира нов запис за услуга во базата на податоци на SCM

= NULL

win32_create_service(array $details, string $machine = null): void

Се обидува да додаде услуга во базата на податоци на SCM. Потребни се администраторски привилегии за да успее ова.

Параметри

details

Низа од детали за услугата:

service

Краткото име на услугата. Ова е името што ќе го користите за контрола на услугата користејќи ја командата. Услугата мора да биде единствена (ниту две услуги не можат да споделат исто име), и, идеално, треба да се избегнуваат празни места во името. net Името за прикажување на услугата. Ова е името што ќе го видите во Аплетот за услуги.

display

Долгиот опис на услугата. Ова е описот што ќе го видите во Аплетот за услуги.

description

Името на корисничката сметка под која сакате да работи услугата. Ако е изоставено, услугата ќе работи како сметката LocalSystem. Ако е наведено корисничкото име, мора да обезбедите и лозинка.

user

Лозинката што одговара на

password

Целосната патека до извршниот модул што ќе се стартува кога ќе се стартува услугата. Ако е изоставено, ќе се користи патеката до тековниот PHP процес. user.

path

Параметри на командната линија што треба да се предадат на услугата кога ќе се стартува. Ако сакате да извршите PHP скрипта како услуга, тогаш првиот параметар треба да биде целосната патека до PHP скриптата што имате намера да ја извршите. Ако името или патеката на скриптата содржи празни места, тогаш заокружете ја целосната патека до PHP скриптата со

params

Ја контролира нарачката за вчитување. Ова сè уште не е целосно поддржано. ".

load_order

Го поставува типот на услугата. Ако е изоставено, стандардната вредност е. Не менувајте го ова освен ако не знаете што правите.

svc_type

Специфицира како треба да се стартува услугата. Стандардно е, што значи дека услугата ќе се стартува кога машината ќе се вклучи. WIN32_SERVICE_WIN32_OWN_PROCESSГо информира SCM што треба да направи кога ќе открие проблем со услугата. Стандардно е. Промената на оваа вредност сè уште не е целосно поддржана.

start_type

, тогаш ова ќе го информира SCM дека оваа услуга треба да се стартува по другите услуги за автоматско стартување плус кратка пауза. WIN32_SERVICE_AUTO_START which means the service will be launched when the machine starts up.

error_control

Informs the SCM what it should do when it detects a problem with the service. The default is WIN32_SERVER_ERROR_IGNORE. Changing this value is not yet fully supported.

delayed_start

Враќа delayed_start е поставен на true, then this will inform the SCM that this service should be started after other auto-start services are started plus a short delay.

Секоја услуга може да биде означена како услуга со одложено автоматско стартување; сепак, оваа поставка нема ефект освен ако услугата не е start_type is WIN32_SERVICE_AUTO_START.

Оваа поставка е применлива само на Windows Vista и Windows Server 2008 или понова верзија.

base_priority

За да се намали влијанието врз искористеноста на процесорот, можеби ќе биде потребно да се постави основен приоритет понизок од нормалниот.

На base_priority може да се постави на една од константите дефинирани во Услугата врати код за грешка специфичен за услугата..

dependencies

За да ги дефинирате зависностите за вашата услуга, можеби ќе биде потребно да го поставите овој параметар на списокот со имињата на услугите во низа.

recovery_delay

Овој параметар ја дефинира паузата помеѓу откажувањето и извршувањето на акцијата за опоравување. Вредноста е во милисекунди.

Стандардната вредност е 60000.

recovery_action_1

Акцијата ќе се изврши при првото откажување. Стандардната вредност е WIN32_SC_ACTION_NONE.

На recovery_action_1 може да се постави на една од константите дефинирани во Процес што го има највисокиот можен приоритет. Нишките на процесот ги преземаат нишките на сите други процеси, вклучувајќи ги и процесите на оперативниот систем што извршуваат важни задачи. На пример, процес во реално време што работи повеќе од многу краток интервал може да предизвика кешот на дискот да не се испразни или да предизвика глувчето да не реагира..

recovery_action_2

Акцијата ќе се изврши при второто откажување. Стандардната вредност е WIN32_SC_ACTION_NONE.

На recovery_action_2 може да се постави на една од константите дефинирани во Процес што го има највисокиот можен приоритет. Нишките на процесот ги преземаат нишките на сите други процеси, вклучувајќи ги и процесите на оперативниот систем што извршуваат важни задачи. На пример, процес во реално време што работи повеќе од многу краток интервал може да предизвика кешот на дискот да не се испразни или да предизвика глувчето да не реагира..

recovery_action_3

Акцијата ќе се изврши при следните откажувања. Стандардната вредност е WIN32_SC_ACTION_NONE.

На recovery_action_3 може да се постави на една од константите дефинирани во Процес што го има највисокиот можен приоритет. Нишките на процесот ги преземаат нишките на сите други процеси, вклучувајќи ги и процесите на оперативниот систем што извршуваат важни задачи. На пример, процес во реално време што работи повеќе од многу краток интервал може да предизвика кешот на дискот да не се испразни или да предизвика глувчето да не реагира..

recovery_reset_period

Бројачот на откажувања ќе се ресетира по паузата дефинирана во параметарот. Паузата е во секунди.

Стандардната вредност е 86400.

recovery_enabled

Поставете го овој параметар на true за да ги овозможите поставките за опоравување, false за да се оневозможи.

Стандардната вредност е false

recovery_reboot_msg

Поставете го овој параметар за да ја дефинирате пораката зачувана во Windows Event Log пред рестартирањето. Се користи само ако една акција е поставена на WIN32_SC_ACTION_REBOOT.

recovery_command

Поставете го овој параметар за да ја дефинирате командата извршена кога една акција е дефинирана на WIN32_SC_ACTION_RUN_COMMAND.

machine

Име на услугата за читање права за пристап.

Вратени вредности

Не се враќа вредност.

Пред верзија 1.0.0, вратено WIN32_NO_ERROR при успех, false ако има проблем со параметрите или а Изборно име на машина. Ако е изоставено, се користи локалната машина. при неуспех.

Errors/Exceptions

А ValueError се фрла ако вредноста на service Врати

А ValueError се фрла ако вредноста на path параметарот недостасува или е празен.

А ValueError се фрла ако вредноста на svc_type параметарот е погрешен.

А ValueError се фрла ако вредноста на start_type параметарот е погрешен.

А ValueError се фрла ако вредноста на error_control параметарот е погрешен.

А ValueError се фрла ако вредноста на base_priority параметарот е погрешен.

А ValueError се фрла ако вредноста на recovery_delay параметарот не е помеѓу 0 и PHP_INT_MAX.

А ValueError се фрла ако вредноста на recovery_action_1 параметарот е погрешен.

А ValueError се фрла ако вредноста на recovery_action_2 параметарот е погрешен.

А ValueError се фрла ако вредноста на recovery_action_3 параметарот е погрешен.

А ValueError се фрла ако вредноста на recovery_reset_period параметарот не е помеѓу 0 и PHP_INT_MAX.

А Win32ServiceException параметарот е празен.

Дневник на промени

Верзија = NULL
Код за грешка на Win32 Фрла ValueError на невалидни податоци во параметрите, претходно false .
Код за грешка на Win32 Фрла Win32ServiceException на грешка, претходно а Изборно име на машина. Ако е изоставено, се користи локалната машина. .
Код за грешка на Win32 Типот на враќање сега е void, претходно беше mixed.
PECL win32service 0.4.0 На dependencies, recovery_delay, recovery_action_1, recovery_action_2, recovery_action_3, recovery_reset_period, recovery_enabled, recovery_reboot_msg and recovery_command се додадени параметри.

Примери

ако е овозможен колекторот за отпадоци, win32_create_service() example

Креирај услуга со краток назив 'dummyphp'.

<?php
$x
= win32_create_service(array(
'service' => 'dummyphp', // the name of your service
'display' => 'sample dummy PHP service', // short description
'description' => 'This is a dummy Windows service created using PHP.', // long description
'params' => '"' . __FILE__ . '" run', // path to the script and parameters
));
debug_zval_dump($x);
?>

пример кој покажува употреба на некои знаменца win32_create_service() пример со зависности

Креирај услуга со краток назив 'dummyphp' и зависности.

<?php
$x
= win32_create_service(array(
'service' => 'dummyphp', // the name of your service
'display' => 'sample dummy PHP service', // short description
'description' => 'This is a dummy Windows service created using PHP.', // long description
'params' => '"' . __FILE__ . '" run', // path to the script and parameters
'dependencies' => array("Netman"), // The list of the dependencies
));
debug_zval_dump($x);
?>

Пример #3 А win32_create_service() пример со обновување

Креирај услуга со краток назив 'dummyphp' и поставки за обновување.

<?php
$x
= win32_create_service(array(
'service' => 'dummyphp', // the name of your service
'display' => 'sample dummy PHP service', // short description
'description' => 'This is a dummy Windows service created using PHP.', // long description
'params' => '"' . __FILE__ . '" run', // path to the script and parameters
'recovery_delay' => 120000, // Recovery action is executed after 2 minutes
'recovery_action_1' => WIN32_SC_ACTION_RESTART, // On first failure, restart the service
'recovery_action_2' => WIN32_SC_ACTION_RUN_COMMAND, // On second failure, execute the commmand
'recovery_action_3' => WIN32_SC_ACTION_NONE, // On other failure, do nothing
'recovery_reset_period' => 86400, // Reset the fail counter after 1 day
'recovery_enabled' => true, // Enable the recovery parameter
'recovery_reboot_msg' => null, // Do not define a reboot message, it's not needed here
'recovery_command' => "c:\clean-service.bat", // When the action is WIN32_SC_ACTION_RUN_COMMAND, execute this command
));
debug_zval_dump($x);
?>

Белешки од корисници 2 забелешки

pauljamesthomson at gmail dot com
19 години пред
Other start_type values:

0x00000002: A service started automatically by the service control manager during system startup. For more information, see Automatically Starting Services.

0x00000000: A device driver started by the system loader. This value is valid only for driver services.

0x00000003: A service started by the service control manager when a process calls the win32_start_service() function.

0x00000004: A service that cannot be started. Attempts to start the service result in the error code 

0x00000001: A device driver started by the IoInitSystem function. This value is valid only for driver services.

I can confirm that 0x00000003 works as expected (service is created, but must be started manually).

More here:

http://msdn2.microsoft.com/en-us/library/ms682450.aspx
Анонимен
пред 15 години
[An example of how to create a Windows service.  Evaluate code first and use at your own risk!]

<?php

//No timeouts, Flush Content immediatly
    set_time_limit(0);
    ob_implicit_flush();
    
//Service Settings
    $phpPath = "D:\\php\\php5.2.9";
    $ServiceName = 'phpServiceName';
    $ServiceDisplay = 'phpDisplayName';

//Windows Service Control
    $ServiceAction = "status";
    //$ServiceAction = "debug";
    if ( isset($_GET['ServiceAction']) and strlen($_GET['ServiceAction']) ) {
        $ServiceAction = addslashes($_GET['ServiceAction']);
    } else if ( isset($argv) and isset($argv[1]) and strlen($argv[1]) ) {
        $ServiceAction = $argv[1];
    }
    if( $ServiceAction == "status" ) {
        $ServiceStatus = win32_query_service_status($ServiceName);
        if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_STOPPED ) {
            echo "Service Stopped\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_START_PENDING ) {
            echo "Service Start Pending\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_STOP_PENDING ) {
            echo "Service Stop Pending\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_RUNNING ) {
            echo "Service Running\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_CONTINUE_PENDING ) {
            echo "Service Continue Pending\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_PAUSE_PENDING ) {
            echo "Service Pause Pending\n\n";
        } else if ( $ServiceStatus['CurrentState'] == WIN32_SERVICE_PAUSED ) {
            echo "Service Paused\n\n";
        } else{
            echo "Service Unknown\n\n";
        }
      exit;
    } else if ( $ServiceAction == "install" ) {
    //Install Windows Service
        win32_create_service( Array(
            'service' => $ServiceName,
            'display' => $ServiceDisplay,
            'params' => __FILE__ . " run",
            'path' => $phpPath."\\php.exe",
        ));
        echo "Service Installed\n\n";
        exit;
    } else if ( $ServiceAction == "uninstall" ) {
    //Remove Windows Service
        win32_delete_service($ServiceName);
        echo "Service Removed\n\n";
        exit;
    } else if( $ServiceAction == "start") {
    //Start Windows Service
      win32_start_service($ServiceName);
      echo "Service Started\n\n";
      exit;
    } else if( $ServiceAction == "stop" ) {
    //Stop Windows Service
      win32_stop_service($ServiceName);
      echo "Service Stopped\n\n";
      exit;
    } else if ( $ServiceAction == "run" ) {
    //Run Windows Service
        win32_start_service_ctrl_dispatcher($ServiceName);
        win32_set_service_status(WIN32_SERVICE_RUNNING);
    } else if ( $ServiceAction == "debug" ) {
    //Debug Windows Service
        set_time_limit(10);
    } else {
        exit();
    }

//Server Loop
    while (1) {
    //Handle Windows Service Request
        usleep(100*1000);
        if ( $ServiceAction == "run" ) {
            switch ( win32_get_last_control_message() ) {
                case WIN32_SERVICE_CONTROL_CONTINUE:
                    break;
                case WIN32_SERVICE_CONTROL_INTERROGATE:
                    win32_set_service_status(WIN32_NO_ERROR);
                break;
                case WIN32_SERVICE_CONTROL_STOP:
                    win32_set_service_status(WIN32_SERVICE_STOPPED);
                    exit;
                default:
                    win32_set_service_status(WIN32_ERROR_CALL_NOT_IMPLEMENTED); 
            }
        }
    //User Loop
        sleep(1);
        echo "\n<BR>YOUR CODE HERE";
    }

//Exit
    if ( $ServiceAction == "run" ) {
        win32_set_service_status(WIN32_SERVICE_STOPPED);
    }
    exit();
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.