php自动运行 win32service功能

什么 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 这个选项

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

Java代码  

  1. <?php  
  2. /** 
  3.  * 利用PHP安装windows自动运行的服务 
  4.  * $Id: WinService.class.php 
  5.  * $winService = new WinService(); 
  6.  * $winService->install(); 
  7.  */  
  8. class WinService  
  9. {  
  10.     //服务名称  
  11.     var $name = 'PHP Service';  
  12.     //定义服务名称  
  13.     var $info_name = "Exsample PHP Service";  
  14.     //定义php.exe存放路径  
  15.     var $path = "C:\\wamp\\php\\php.exe";  
  16.     //定义所要执行的程序  
  17.     var $params = "D:\\localhost\\Service\\win32_service.php";  
  18.     //定义程序分隔执行时间,单位:秒  
  19.     var $sleep = 5;  
  20.   
  21.     private function __construct($name = '', $infoName = '', $param = '')  
  22.     {  
  23.         $this->name = $name;  
  24.         $this->info_name = $infoName;  
  25.         $this->params = $param;  
  26.     }  
  27.   
  28.     public function install()  
  29.     {  
  30.         /* 注册服务  */  
  31.         $x = win32_create_service(array(  
  32.             'service' => $this->name,  
  33.             'display' => $this->info_name,  
  34.             'path' => $this->path,  
  35.             'params' => $this->params,  
  36.         ));  
  37.   
  38.         /* 启动服务 */  
  39.         win32_start_service($this->name);  
  40.   
  41.         if ($x !== true) {  
  42.             die ('服务创建失败!');  
  43.         } else {  
  44.             die ('服务创建成功!');  
  45.         }  
  46.     }  
  47.   
  48.     public function uninstall()  
  49.     {  
  50.         /* 移除服务 */  
  51.         $removeService = win32_delete_service($this->name);  
  52.   
  53.         switch ($removeService) {  
  54.             case   1060:  
  55.                 die ('服务不存在!');  
  56.                 break;  
  57.             case   1072:  
  58.                 die ('服务不能被正常移除! ');  
  59.                 break;  
  60.             case      0:  
  61.                 die ('服务已被成功移除!');  
  62.                 break;  
  63.             default    :  
  64.                 die ();  
  65.                 break;  
  66.         }  
  67.     }  
  68.   
  69.     public function restart()  
  70.     {  
  71.         /* 重启服务 */  
  72.         $svcStatus = win32_query_service_status($this->name);  
  73.   
  74.         if ($svcStatus == 1060) {  
  75.             echo   "服务[" . $this->name . "]未被安装,请先安装";  
  76.         } else {  
  77.             if ($svcStatus['CurrentState'] == 1) {  
  78.                 $s = win32_start_service($this->name);  
  79.   
  80.                 if ($s != 0) {  
  81.                     echo  "服务无法被启动,请重试! ";  
  82.                 } else {  
  83.                     echo  "服务已启动! ";  
  84.                 }  
  85.   
  86.             } else {  
  87.                 $s = win32_stop_service($this->name);  
  88.                 if ($s != 0) {  
  89.                     echo " 服务正在执行,请重试! ";  
  90.                 } else {  
  91.                     $s = win32_start_service($this->name);  
  92.                     if ($s != 0) {  
  93.                         echo   "服务无法被启动,请重试! ";  
  94.                     } else {  
  95.                         echo   "服务已启动! ";  
  96.                     }  
  97.                 }  
  98.             }  
  99.         }  
  100.     }  
  101.   
  102.     public function start()  
  103.     {  
  104.         $s = win32_start_service($this->name);  
  105.         if ($s != 0) {  
  106.             echo   " 服务正在运行中! ";  
  107.         } else {  
  108.             echo   " 服务已启动! ";  
  109.         }  
  110.     }  
  111.   
  112.     public function stop()  
  113.     {  
  114.         $s = win32_stop_service($this->name);  
  115.         if ($s != 0) {  
  116.             echo   " 服务未启动! ";  
  117.         } else {  
  118.             echo   " 服务已停止! ";  
  119.         }  
  120.     }  
  121. }  
  122.   
  123. ?>  

win32_service.php

Java代码  

  1. <?php  
  2. //检测服务是否存在  
  3. if (!win32_start_service_ctrl_dispatcher("PHP Service")) {  
  4.  die("没有发现正在运行的 [ "PHP Service" ] 服务");  
  5. }  
  6. win32_set_service_status(WIN32_SERVICE_START_PENDING);  
  7. win32_set_service_status(WIN32_SERVICE_RUNNING);  
  8. //如果运行中  
  9. while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {  
  10.     //写入文件  
  11.     for ($i = 1; $i <= 1; $i++) {  
  12.         $b_file_path = "D:\\localhost\\test.txt";  
  13.         $f = fopen($b_file_path, 'a+');  
  14.         $msg = 'Dernier backup  correctement:' . date('y/m/d h:i:s');  
  15.         fwrite($f, $msg . "\r\n");  
  16.         fclose($f);  
  17.         sleep(1);  
  18.     }  
  19. }  
  20. ?>  

 

时间: 2024-11-17 08:50:51

php自动运行 win32service功能的相关文章

Win7取消开机自动运行放大镜功能的方法

  现在的系统中一般都会存在自带的功能,占据了一些内存,又不知道到底可不可以删除,虽然说有时候偶尔还是会用到,但是用到的时间相对还是比较少的,最近就有一个用户来和我说,win7系统中有个放大镜功能,可以自动放大一些文字或者图片,在日常中我们使用的次数很少,它只要一开机就会自动启动,这样就会造成电脑运行速度缓慢.既然有不少人有这种困扰,小编就来教大家如何关闭win7系统中的放大镜功能. 步骤如下: 1.首先我们点击电脑最左下角开始菜单 然后点击控制面板 2.在控制面板设置窗口里点击"轻松访问中心&

win7电脑中如何禁止放大镜在开机后自动运行?

  为什么要有放大镜这个功能?可能年轻一点的用户会大呼不理解,也不会使用到这个功能,但是我们不得不正视一个问题,因为越来越多的老年朋友也开始使用电脑,成为"网民",但是相对来说,他们的视力就不如年轻人这么好了,因此,放大镜对于他们来说就是非常有必要的了!不过如果一般都是年轻人使用的话,大家又觉得ghost win7开机自动运行放大镜功能会造成开机速度的减慢的话,那么下面,小编就来具体介绍一下咱们如何禁止放大镜功能开机自动运行! 1.首先,咱们单击开始菜单,然后找到其中的控制面板,并单击

mfc-MFC程序增加显示每日格言的功能,一个是自动运行每一个是通过菜单运行

问题描述 MFC程序增加显示每日格言的功能,一个是自动运行每一个是通过菜单运行 每日格言放在tips.txt文件中,每行一条,可以点击上一条下一条翻阅 解决方案 参考:http://www.codeproject.com/Articles/17/Improved-Tip-of-the-Day-Dialog 解决方案二: 读取文件:getline 将文件的内容update到控件上. 你这道题目的问题在于:每天要显示一条,那你如何保证一天只读取和显示一次文本内容.你这样操作: 在安装目录下生成一个文

微软锁死自动运行功能系统受感染量大幅减少

[赛迪网讯]北京时间6月18日消息,据国外媒体报道,微软恶意软件防护中心本周发表了一篇博客文章称,微软发现从2月中旬到5月中旬的3个月间因恶意软件自动运行导致Windows Vista和XP受感染的数量比前3个月减少了130万个. 能够自动运行的恶意软件在过去几年一直是个巨大的安全威胁,这种恶意软件通常通过闪盘.存储卡和其他外接设备传播,利用Windows系统的自动运行功能启动. 微软称,自动运行功能是某些恶意软件如Conflicker.Rimecud和Taterf等的触发器. 今年2月,微软在

u盘自动运行病毒分析与解决方法

U盘自动运行病毒(auto病毒)近来非常常见,并且具有一定程度危害,它的机理是依赖Windows的自动运行功能,使得我们在点击打开磁盘 的时候,自动执行相关的文件.今天带来U盘(auto病毒)类病毒分析与解决方案! 一.U盘病毒简述: U盘(自动运行)类病毒(auto病毒)近来非常常见,并且具有一定程度危害,它的机理是依赖Windows的自动运行功能,使得我们在点击打开磁盘 的时候,自动执行相关的文件.目前我们使用U盘都十分频繁,当我们享受U盘所带来的方便时,U盘病毒也在悄悄利用系统的自动运行功

WinCE应用程序开机自动运行的又一种方法

近日在开发过程中遇到WinCE应用程序开机自动运行的问题,在网上找了找,发现大概有以下三种方法: 1.将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到StartUp目录下,这样当系统运行后应用程序就能自动运行: 2.直接替换Wince的SHELL,即修改注册表: [HKEY_LOCAL_MACHINE\init] "Launch50"="explorer.exe" "Depend50"=hex:14,00, 1e,00 把这个expl

在Red Hat Linux中自动运行程序

1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序.例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window. 2.登录时自动运行程序 用户

asp.net+ajax+sqlserver自动补全功能实现解析

 这篇文章主要介绍了asp.net + ajax + sqlserver 自动补全功能,需要的朋友可以参考下 代码下载    说明:数据库连接字符串在web.config文件中,为方便运行使用的是官方的Northwind数据库.    参考(向其作者致敬):    ² http://www.loveweb8.com/plus/demo.php?aid=57这个例子是html源码.利用jquery.autocomplete插件利用js实现了自动补全功能.由于我的需要是结合sqlserver数据库表

盘点电脑设置自动运行命令的一些方法

其实很多朋友不知道电脑使用中很多东西可以自动化完成,仅可以借助相关命令也可以借助相关软件去完成一些电脑智能操作,在工业中电脑智能化应用已经很高了,虽然我们没有设置工业化智能控制机器的资源与技术,但我们依然能够使用电脑智能完成生活中一些小小操作,比如自动关机与开机,自动发信息等等,接下来笔者为大家盘点下当前大家用的比较多的电脑自动化设置,欢迎补充与完善. 自动开机 自动开机是一个非常实用的功能,利用它我们能做很多事情.现在自动开机的方法基本上都是通过设置BIOS参数来实现的.在开机时按下"Del&