- 论坛徽章:
- 0
|
因工作需要,需利用PHP在windows中建创自动运行的服务,调试后不敢独享,放出源代码。
特别注意:PHP.ini文件中路径要使用绝对路径
Config.php
- <?PHP
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- //定义服务名称
- define("_SERVICENAME", "PHP Service");
- //定义服务显示名称
- define("_SERVICEINFONAME", "Exsample PHP Service");
- //定义php.exe存放路径
- define("_PATH", "C:\wamp\php\php.exe");
- //定义所要执行的程序名称
- define("_PARAMS", "D:\\localhost\\Service\\win32_service.php");
- //定义程序分隔执行时间,单位:秒
- define("_SLEEP", 5);
- ?>
复制代码
index.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //查看服务状态
- $svcStatus=win32_query_service_status( _SERVICENAME );
- if($svcStatus == 1060){
- echo "服务 [ "._SERVICENAME." ] 未被安装";
- }else{
- echo "服务 [ "._SERVICENAME." ] 已经安装";
-
- echo " 服务状态:";
- switch($svcStatus['CurrentState']){
- case 1: echo "未启动"; break;
- case 4: echo "已启动"; break;
- default: break;
- }
-
- }
- echo '<ul>
- <li><a href="install_service.php">安装服务</a></li>
- <li><a href="uninstall_service.php">移除服务</a></li>
- <li><a href="start_service.php">开始服务</a></li>
- <li><a href="stop_service.php">停止服务</a></li>
- <li><a href="restart_service.php">重启服务</a></li>
- </ul>
- <p>';
- ?>
复制代码
install_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //注册服务
- $x = win32_create_service(array(
- 'service' => _SERVICENAME,
- 'display' => _SERVICEINFONAME,
- 'path' => _PATH,
- 'params' => _PARAMS,
- ));
- //启动服务
- win32_start_service( _SERVICENAME );
- if($x !== true){
- die('服务创建失败!');
- }else{
- die('服务创建成功!');
- }
- ?>
复制代码
restart_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 简介:重启服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //重启服务
- $svcStatus=win32_query_service_status( _SERVICENAME );
- if($svcStatus == 1060){
- echo "服务 [ "._SERVICENAME." ] 未被安装,请先安装";
-
- }else{
- if($svcStatus['CurrentState'] == 1){
-
- $s=win32_start_service( _SERVICENAME );
-
- if($s != 0){
- echo "服务无法被启动,请重试!";
- }else{
- echo "服务已启动!";
- }
-
- }else{
-
- $s=win32_stop_service( _SERVICENAME );
- if($s != 0){
- echo "服务正在执行,请重试!";
- }else{
-
- $s=win32_start_service( _SERVICENAME );
-
- if($s != 0){
- echo "服务无法被启动,请重试!";
- }else{
- echo "服务已启动!";
- }
-
- }
-
- }
- }
- ?>
复制代码
start_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 简介:启动服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //启动服务
- $s=win32_start_service( _SERVICENAME );
- if($s != 0){
- //1056
- echo "服务正在运行中!";
- }else{
- echo "服务已启动!";
- }
- ?>
复制代码
stop_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 简介:停止服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //停止服务
- $s=win32_stop_service( _SERVICENAME );
- if($s != 0){
- //1062
- echo "服务未启动!";
- }else{
- echo "服务已停止!";
- }
- ?>
复制代码
uninstall_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 简介:移除服务
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //移除服务
- $removeService = win32_delete_service( _SERVICENAME );
- switch($removeService)
- {
- case 1060: die('服务不存在!');break;
- case 1072: die('服务不能被正常移除!');break;
- case 0:die('服务已被成功移除!');break;
- default:die();break;
- }
- ?>
复制代码
win32_service.php
- <?php
- /*
- * 功能:利用PHP安装windows自动运行的服务
- * 简介:自动执行程序
- * 作者:LiangJQ
- * 时间:2008年3月7日
- */
- require_once "Config.php";
- //检测服务是否存在
- if (!win32_start_service_ctrl_dispatcher( _SERVICENAME )) {
- die("没有发现正在运行的 [ "._SERVICENAME." ] 服务");
- }
- //如果运行中
- 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);
- }
- }
- ?>
复制代码
相关源码已打包,也可下载测试!
[ 本帖最后由 梦中的天堂 于 2008-3-7 22:52 编辑 ] |
|