查看详情

将PHP程序封装成windows服务以便开机自动运行

PHP语言作为脚本语言,本身只是一个文本文件,是无法自动运行的,需要通过PHP安装环境中的引擎进行解析、执行。

但是,有时候可能需要让PHP程序自动执行,虽然说能通过添加php.exe文件作为启动项,再配合参数进行执行,但是,这种方式需要管理员登录桌面才行,有没有一种方法能开机自动运行呢,比如定时执行特定任务。

php.exe文件本身也是无法通过服务的方式启动的,php-cgi.exe也不行,那么,如果能让它们以服务的方式启动,那问题就能解决了。这里需要用到srvany.exe,通过将srvany.exe以服务的方式启动,再通过srvany.exe调用php-cgi.exe,问题就能得到解决。


接下来介绍一下具体的操作方法。

下载srvany.exe,解压到c:\windows\srvany\srvany.exe


安装 instsrv ServiceName C:\Windows\srvany\srvany.exe 

卸载 instsrv ServiceName remove 


安装完毕后,我们需要对srvany.exe进行配置,以便于能够加载我们指定的程序,配置的方法是,开始 - 运行 - regedit,打开注册表,定位到下面的路径。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName 

如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。 


名称 Application 值为你要作为服务运行的程序地址。 

名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。 

名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。 


如何需要同时运行多个PHP文件,可以考虑使用vbs脚本启动多个php-cgi.exe进程以解析多个文件,这样就不用创建多个服务了。

如以下示例:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ChatServer\parameters]

"AppDirectory"="D:\\www\\chat\\"

"Application"="D:\\www\\chat\\wscript.exe"

"AppParameters"="D:\\www\\chat\\start_for_win.vbs"


至于start_for_win.vbs,它的作用是调用php-cgi.exe解析多个PHP文件,如下:

set objShell = CreateObject("Wscript.Shell")

objShell.Run "D:\PHP7\php.exe D:\www\chat\Applications\YourApp\start_register.php",0

objShell.Run "D:\PHP7\php.exe D:\www\chat\Applications\YourApp\start_gateway.php",0

objShell.Run "D:\PHP7\php.exe D:\www\chat\Applications\YourApp\start_businessworker.php",0


原创内容,转载请注明出处:网站建设,APP开发,小程序开发请找江西居道科技有限公司,http://www.juguw.net

智能建站系统代理招商
所属分类:文章中心      Time:2020-09-09 06:41:46      人气:1546
关闭
13517086454