windows下将任意程序(PHP)添加为服务
2016-12-11 18:56
267 查看
题记
本文主要阐述instsrv.exe 和 srvany.exe 将某程序(PHP)添加到windows 服务中。近期遇到一些情况,web服务如果按照Apache+PHP+MySql 搭建起来代价有点高。Mysql可以用Sqlite代替。PHP有自带的Web Server。这样一个PHP就可以解决。略微麻烦的是后台执行和开机启动的问题。
如何使用PHP自带Web Server
命令 php -S {server}:{port} [-t path] [router.php] [-file webServer.php]例句 php -S lcoalhost:80 -t D:\path router.php-file webServer.php
{server} 必填 域名、主机名或IP地址
{port} 必填 监听的端口号
[-t path] 选填 如果不填默认为当前目录
[router.php] 选填 不填将不使用路由
[-file webServer.php] 选填 不填将不修改webServer机制
路由文件
如果路由为 index.php$url = parse_url($_SERVER['REQUEST_URI']); $uri = $url['path']; if ($uri != "/" && $uri != "/index.php" && file_exists(dirname(__FILE__).$uri)) { //请求的文件或目录存在,直接返回 return false; }
如果路由不为 index.php
$url = parse_url($_SERVER['REQUEST_URI']); $uri = $url['path']; if (file_exists(dirname(__FILE__).$uri)) { //请求的文件或目录存在,直接返回 return false; }
以上代码 能实现类似于 以下
.htaccess文件的效果
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule>
服务器配置文件
webServer.php文件 复制自php官方,请自行脑补或测试其功能
<?php if (preg_match('/\.css|\.js|\.jpg|\.png|\.map$/', $_SERVER['REQUEST_URI'], $match)) { $mimeTypes = [ '.css' => 'text/css', '.js' => 'application/javascript', '.jpg' => 'image/jpg', '.png' => 'image/png', '.map' => 'application/json' ]; $path = __DIR__ . $_SERVER['REQUEST_URI']; if (is_file($path)) { header("Content-Type: {$mimeTypes[$match[0]]}"); require $path; exit; } } require_once __DIR__.'/../app/bootstrap.php';
创建 windows服务
安装与删除
instsrv.exe 与 srvany.exe的资料网上较少,基本都是相互复制。至今没找到64位版的程序,不过我在64位Win10测试无异常
instsrv.exe 的作用是将 srvany.exe 添加到windows 服务中
srvany.exe 的作用是通过服务方式加载指定程序。
instsrv.exe 与 srvany.exe可以放到任意目录 并非必须放在 System32
添加 C:\server\instsrv.exe {Name} C:\server\srvany.exe
删除 C:\server\instsrv.exe {Name} remove
添加服务后打开注册表 regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{Name}服务名称项目右击新建项,名称为Parameters。
定位到Parameters项,新建以下几个字符串值。
名称 Application 值为你要作为服务运行的程序地址。
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。
通过服务 services.msc
管理
找到添加的服务
{Name}可以与普通服务一样管理
后记
将PHP直接添加到服务中的意义,不仅在于省掉一个Apache之类的东西。还可以在Windows环境中使用PHP创建其他常驻内存的服务(如果对性能要求不高的话)。相关文章推荐
- C# windows 服务添加安装程序。
- windows下安装redis服务 AND PHP中添加扩展 AND PHP中使用
- 解决WINDOWS无法打开“添加打印机”,本地后台打印程序服务没有运行
- 添加服务,用于定期执行某个程序或者应用程序(windows service)
- 任意程序作为Windows服务运行方法
- 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码
- Delphi中给Windows服务程序添加描述信息
- 把任意exe程序注册成windows系统服务
- Windows中添加自己的程序到开机启动中(添加服务,添加注册表)
- 怎样把任意exe程序注册成windows系统服务(手动注册服务)
- 怎样把任意exe程序注册成windows系统服务
- 如何在Windows服务程序中添加U盘插拔的消息
- Windows 无法打开“添加打印机”本地打印后台处理程序服务没有运行。请重新启动打印后台处理程序
- C#Windows服务工程添加安装程序的方法
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- 使用Delphi编写自动关闭Windows信使服务窗体程序
- 用 C 语言编写 Windows 服务程序的五个步骤
- Windows 服务控制管理器通信的命令行程序
- 用Visual C#创建Windows服务程序
- (转)用C语言编写Windows服务程序的五个步骤