`
hudeyong926
  • 浏览: 2032783 次
  • 来自: 武汉
社区版块
存档分类
最新评论

php自动运行 win32service功能

    博客分类:
  • PHP
阅读更多

什么 windows服务  ? http://hudeyong926.iteye.com/blog/1056467

Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序 。 这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算 机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务

简单的说就是可以长时间、自动运行在Windows上的PHP程序。 问:这对我来说重要吗?

 

有什么用?

 哈哈哈!有了这个,我们就可以做更多的事了。如:定期执行一个PHP任务、自动更新数据 ....等等。

 

如何实现?

必须有一台 Windows服务器 或者Windows PC机

必须安装得有PHP运行环境

必须在PHP 的安装目录的\ext\下有这个 php_win32service.dll文件

必须有php.ini文件里面开启  extension=php_win32service.dll 这个选项

如果你运行不起来(请看一哈上面的说明哦)最重要代码来了,如下

<?php
/**
 * 利用PHP安装windows自动运行的服务
 * $Id: WinService.class.php
 * $winService = new WinService();
 * $winService->install();
 */
class WinService
{
    //服务名称
    var $name = 'PHP Service';
    //定义服务名称
    var $info_name = "Exsample PHP Service";
    //定义php.exe存放路径
    var $path = "C:\\wamp\\php\\php.exe";
    //定义所要执行的程序
    var $params = "D:\\localhost\\Service\\win32_service.php";
    //定义程序分隔执行时间,单位:秒
    var $sleep = 5;

    private function __construct($name = '', $infoName = '', $param = '')
    {
        $this->name = $name;
        $this->info_name = $infoName;
        $this->params = $param;
    }

    public function install()
    {
        /* 注册服务  */
        $x = win32_create_service(array(
            'service' => $this->name,
            'display' => $this->info_name,
            'path' => $this->path,
            'params' => $this->params,
        ));

        /* 启动服务 */
        win32_start_service($this->name);

        if ($x !== true) {
            die ('服务创建失败!');
        } else {
            die ('服务创建成功!');
        }
    }

    public function uninstall()
    {
        /* 移除服务 */
        $removeService = win32_delete_service($this->name);

        switch ($removeService) {
            case   1060:
                die ('服务不存在!');
                break;
            case   1072:
                die ('服务不能被正常移除! ');
                break;
            case      0:
                die ('服务已被成功移除!');
                break;
            default    :
                die ();
                break;
        }
    }

    public function restart()
    {
        /* 重启服务 */
        $svcStatus = win32_query_service_status($this->name);

        if ($svcStatus == 1060) {
            echo   "服务[" . $this->name . "]未被安装,请先安装";
        } else {
            if ($svcStatus['CurrentState'] == 1) {
                $s = win32_start_service($this->name);

                if ($s != 0) {
                    echo  "服务无法被启动,请重试! ";
                } else {
                    echo  "服务已启动! ";
                }

            } else {
                $s = win32_stop_service($this->name);
                if ($s != 0) {
                    echo " 服务正在执行,请重试! ";
                } else {
                    $s = win32_start_service($this->name);
                    if ($s != 0) {
                        echo   "服务无法被启动,请重试! ";
                    } else {
                        echo   "服务已启动! ";
                    }
                }
            }
        }
    }

    public function start()
    {
        $s = win32_start_service($this->name);
        if ($s != 0) {
            echo   " 服务正在运行中! ";
        } else {
            echo   " 服务已启动! ";
        }
    }

    public function stop()
    {
        $s = win32_stop_service($this->name);
        if ($s != 0) {
            echo   " 服务未启动! ";
        } else {
            echo   " 服务已停止! ";
        }
    }
}

?>

win32_service.php

<?php
//检测服务是否存在
if (!win32_start_service_ctrl_dispatcher("PHP Service")) {
 die("没有发现正在运行的 [ "PHP Service" ] 服务");
}
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()) {
    //写入文件
    for ($i = 1; $i <= 1; $i++) {
        $b_file_path = "D:\\localhost\\test.txt";
        $f = fopen($b_file_path, 'a+');
        $msg = 'Dernier backup  correctement:' . date('y/m/d h:i:s');
        fwrite($f, $msg . "\r\n");
        fclose($f);
        sleep(1);
    }
}
?>

 

 

  • 大小: 11.8 KB
分享到:
评论

相关推荐

    Win10下部署IIS,并运行php项目

    "Win10下部署IIS,并运行php项目" Win10下部署IIS,并运行php项目是一种常见的开发环境搭建方式。本文将详细介绍如何在Win10下部署IIS,并运行php项目。 知识点1:IIS的安装和配置 IIS(Internet Information ...

    pecl-5.2.5-Win32.zip

    "pecl-5.2.5-Win32.zip"是一个专门为Windows 32位系统编译的PECL扩展包,版本为5.2.5。这个压缩包包含了多个PHP扩展的动态链接库(DLL)文件,这些文件使得PHP在运行时能够加载并使用特定的模块。 1. `...

    windows服务器下实现php程序自动执行

    windows服务器下实现php程序自动执行! 如何实现? 前提: ... 必须在PHP 的安装目录的\ext\下有这个php_win32service.dll文件 必须有php.ini文件里面开启 extension=php_win32service.dll 这个选项

    apache24 + php5.6

    PHP5.6.37-Win32-VC11-x64表明这是为64位Windows系统编译的,使用Visual C++ 11编译器构建。集成PHP到Apache中,你需要执行以下步骤: 1. **安装PHP**:解压php5.6.zip文件,获取php.ini-development或...

    win10安装sqlsrv需要的扩展和加密扩展.rar

    接下来是`php_win32service.dll`,这是一个PHP扩展,允许你在PHP环境中创建、管理和控制Windows服务。这对于将SQL Server配置为Windows服务尤其重要,因为这样可以使其在后台自动启动,即使没有用户登录也能保持运行...

    win环境下php环境搭建

    3. 在安装过程中,记得勾选“Start Apache HTTP Server as a service”选项,以便Apache在系统启动时自动运行。 4. 安装完成后,可以在系统托盘中找到Apache图标,点击可以启动或停止服务。 二、PHP安装 1. 接下来...

    windows+apache+php5+mysql 部署

    2. 安装Apache:下载最新稳定版的Apache(例如apache_2.2.9-win32-x86-no_ssl-r2.msi),双击运行安装向导,按照提示进行下一步。 3. 设置安装选项:在“Network Domain”中输入你的域名,"Server Name"输入服务器...

    WIN2003+IIS6+PHP5N+偽靜態 環境搭建

    当使用administrator权限创建Web目录,并在其下进一步创建如Sprvk目录时,如果将Sprvk目录及其子目录Data和Web的权限设置为administrator+web_spvrk(IIS运行账号),则可能会遇到PHP程序无法正常运行的问题。...

    在win7家庭普通版64位上配置成功的apache和PHP教程

    在安装Apache时,推荐选择"for All Users, on Port 80, as a Service -- Recommended"选项,以确保服务在所有用户登录时自动启动。若80端口无法使用,可改为其他未被占用的端口,如8080,并在http.conf文件中相应地...

    WinXP+IIS+MySql+PHP+ZendOptimizer+phpMyAdmin环境配置安装指南

    运行下载的mysql-essential-5.0.27-win32.msi,选择自定义安装,改变安装路径到D:\Local\MySQL。安装过程中跳过Sign Up向导,选择“Configure the MySQL Server now”,并按照提示进行详细配置,如选择Server ...

    Apche Software Foundation 在 Windows 下安装文件(32位)

    7. **集成到Windows服务**:为了使Apache在系统启动时自动运行,可以使用"bin"文件夹中的"apache_service.bat"脚本将Apache注册为Windows服务。 8. **安全与优化**:安装OpenSSL后,你可以配置SSL证书以启用HTTPS。...

    BAT批处理脚本-系统设置查询修改硬件相关-WIN2003 IIS最小权限分配.bat.zip

    BAT批处理脚本是Windows操作系统中一种非常实用的自动化工具,它通过编写一系列的命令行指令,实现批量执行任务,极大地提高了...在运行任何批处理脚本前,请务必了解其功能和可能的影响,避免对系统造成不必要的损害。

    在线客服_1.0.2.zip

    1. `start_for_win.bat`:这是一个Windows批处理文件,可能是用来启动在线客服系统的命令行脚本,方便在Windows环境下运行。 2. `info.ini`:这可能是一个配置文件,包含关于系统的信息或者设置,如数据库连接信息...

    在windows環境下架設網頁伺服器(AppServ套件安裝).doc

    - 下载完成后,双击安装文件`appserv-win32-2.5.7.exe`启动安装程序。 - 在安装向导中,点击“Next”继续。 - 接受许可协议,点击“I Agree”。 - 选择安装目录,默认为"C:\AppServ",也可自定义。 - 选择要安装的...

    windows下专用kiwi syslog日志服务器安装教程

    1. **下载并运行** AppServ 的安装程序 `appserv-win32-2.5.9.exe`。 2. **选择安装选项**:在安装过程中,需要注意的是不要勾选安装 `phpmyadmin`,因为这是一个用于管理MySQL的PHP工具,在本次安装中并不需要。 3....

    memcached-1.4.5 windows版

    4. **作为服务**:为了使其在系统启动时自动运行,可以将其注册为Windows服务,使用`install-service.bat`脚本进行安装。 **三、使用与编程接口** 1. **客户端库**:Memcached支持多种编程语言的客户端库,如PHP、...

    Apache+PHP+MySQL+phpMyAdmin配置教程[汇编].pdf

    1. **安装准备**:下载MySQL安装包`mysql-essential-4.1.22-win32.msi`并运行。 2. **欢迎界面**:出现MySQL Server 4.1安装向导。 3. **选择安装模式**:选择[Custom]自定义安装模式。 4. **安装组件选择**:保持...

    在windows环境下架设网页伺服器(AppServ套件安装.docx

    2. 下载完成后,双击安装文件`appserv-win32-2.5.7.exe`启动安装程序。 3. 在安装向导的欢迎界面,点击“Next”继续。 4. 阅读并接受许可协议后,点击“I Agree”。 5. 选择安装目录,默认为“C:\AppServ”,如有...

Global site tag (gtag.js) - Google Analytics