php 运行服务,php自动运行 win32service功能

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

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

有什么用?

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

....等等。

如何实现?

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

必须安装得有PHP运行环境

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

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

51987477_1.jpg

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

Java代码 51987477_2.png<?php

/**

* 利用PHP安装windows自动运行的服务

* $Id: WinService.class.php

* $winService = new WinService();

* $winService->install();

*/

classWinService

{

//服务名称

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;

privatefunction __construct($name ='', $infoName ='', $param ='')

{

$this->name = $name;

$this->info_name = $infoName;

$this->params = $param;

}

publicfunction 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 ('服务创建成功!');

}

}

publicfunction uninstall()

{

/* 移除服务 */

$removeService = win32_delete_service($this->name);

switch($removeService) {

case1060:

die ('服务不存在!');

break;

case1072:

die ('服务不能被正常移除! ');

break;

case0:

die ('服务已被成功移除!');

break;

default:

die ();

break;

}

}

publicfunction 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   "服务已启动! ";

}

}

}

}

}

publicfunction start()

{

$s = win32_start_service($this->name);

if($s !=0) {

echo   " 服务正在运行中! ";

} else{

echo   " 服务已启动! ";

}

}

publicfunction stop()

{

$s = win32_stop_service($this->name);

if($s !=0) {

echo   " 服务未启动! ";

} else{

echo   " 服务已停止! ";

}

}

}

?>

win32_service.php

Java代码 51987477_2.png<?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);

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值