但是,有時候可能需要讓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