windows環境下用workerman做系統整合
系統整合的關鍵是程式之間的資料交換,workerman能很好的完成這項工作,下圖是一個簡單的系統整合示例,採用瀏覽器做UI的原因是方便遠端(web,lan都可以,不過web還是由安全機制更好的apache中轉比較好)對系統進行操控,而且在UI新增/刪減功能非常方便:
但是在windows環境下,workerman不具備程序守護能力,最簡單的解決方案是將workerman封裝成windows
service來實現程序守護。
封裝工具:instsrv.exe, srvany.exe,由microsoft的Windows Server 2003 Resource Kit Tools包所提供。
下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=17657
下載到的Windows Server 2003 Resource Kit Tools包是一個自解壓檔案rktools.exe,執行後從解壓出來的檔案中,找到instsrv.exe, srvany.exe這2個檔案,然後將它們複製到workerman安裝目錄下,再在該目錄下建立4個空白的txt檔案,修改txt檔案的副檔名為.bat:
install.bat:用於將workerman程式封裝成windows service
uninstall.bat:用於刪除 install.bat所安裝的所有windows service
startAll.bat:用於啟動 install.bat所安裝的所有windows service
stopAll.bat:用於停止 install.bat所安裝的所有windows service
示例:workerman-chat-for-win的目錄結構,藍色背景的6個檔案為我們前面所新增的檔案:
選中install.bat-->右鍵-->編輯,新增以下內容:
注意:
1:set phpDir=D:\wamp64\bin\php\php7.0.10\(改為你的PHP安裝目錄)
2:set regDir=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\
也可以用:
set regDir=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
代替。效果一樣,但注意只能用一種,不要混用。
3:需要新增其它workerman元件的話,複製REM ########
install workman_business ########後面的內容,貼上到文件末尾,修改:
set cxSrv=你想要的服務名稱(字母,下劃線,數字組成)
set cxApp=你的workerman元件的絕對路徑和檔名
--------以下為install.bat檔案內容---------------------------------------------
REM: install.bat for workerman-chat-for-win
@echo off
set cxDir=%~dp0
set wraper=%cxDir%srvany.exe
set appDir=%cxDir%Applications\chat\
set regDir=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\
set phpDir=D:\wamp64\bin\php\php7.0.10\
set cxPHP=%phpDir%php.exe
REM ########install
workman_register ########
set cxSrv=workman_register
set cxApp=%appDir%start_register.php
set cxReg=%regDir%%cxSrv%\Parameters\
instsrv %cxSrv% %wraper%
reg add %cxReg% /v AppDirectory /t REG_SZ /d "%phpDir%" /f
reg add %cxReg% /v Application /t REG_SZ /d "%cxPHP%" /f
reg add %cxReg% /v AppParameters /t REG_SZ /d "%cxApp%" /f
REM ########
install workman_webServer ########
set cxSrv=workman_webServer
set cxApp=%appDir%start_web.php
set cxReg=%regDir%%cxSrv%\Parameters\
instsrv %cxSrv% %wraper%
reg add %cxReg% /v AppDirectory /t REG_SZ /d "%phpDir%" /f
reg add %cxReg% /v Application /t REG_SZ /d "%cxPHP%" /f
reg add %cxReg% /v AppParameters /t REG_SZ /d "%cxApp%" /f
REM ########
install workman_gateway ########
set cxSrv=workman_gateway
set cxApp=%appDir%start_gateway.php
set cxReg=%regDir%%cxSrv%\Parameters\
instsrv %cxSrv% %wraper%
reg add %cxReg% /v AppDirectory /t REG_SZ /d "%phpDir%" /f
reg add %cxReg% /v Application /t REG_SZ /d "%cxPHP%" /f
reg add %cxReg% /v AppParameters /t REG_SZ /d "%cxApp%" /f
REM ########
install workman_business ########
set cxSrv=workman_business
set cxApp=%appDir%start_businessworker.php
set cxReg=%regDir%%cxSrv%\Parameters\
instsrv %cxSrv% %wraper%
reg add %cxReg% /v AppDirectory /t REG_SZ /d "%phpDir%" /f
reg add %cxReg% /v Application /t REG_SZ /d "%cxPHP%" /f
reg add %cxReg% /v AppParameters /t REG_SZ /d "%cxApp%" /f
選中uninstall.bat-->右鍵-->編輯,新增以下內容:
注意:
寫完才發現,貌似reg delete語句不是必須的,需驗證,不想折騰了。
--------以下為uninstall.bat檔案內容---------------------------------------------
REM: install.bat for workerman-chat-for-win
@echo off
set regDir=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\
reg delete %regDir%workman_register\Parameters
instsrv.exe workman_register remove
reg delete %regDir%workman_webServer\Parameters
instsrv.exe workman_webServer remove
reg delete %regDir%workman_gateway\Parameters
instsrv.exe workman_gateway remove
reg delete %regDir%workman_business\Parameters
instsrv.exe workman_business remove
選中startAll.bat-->右鍵-->編輯,新增以下內容:
--------以下為uninstall.bat檔案內容---------------------------------------------
@echo off
sc start workman_register
sc start workman_webServer
sc start workman_gateway
sc start workman_business
選中stopAll.bat-->右鍵-->編輯,新增以下內容:
--------以下為stopAll.bat檔案內容---------------------------------------------
@echo off
sc stop workman_business
sc stop workman_gateway
sc stop workman_webServer
sc stop workman_register
選中startAll.bat-->右鍵-->以管理員身份執行(A);
此電腦-->右鍵-->管理-->服務和應用程式\服務,在右側視窗可以看到剛才安裝好的四個服務
開啟瀏覽器,在位址列鍵入:localhost:55151 成功進入到聊天系統
參考:http://blog.csdn.net/sapperlab/article/details/53574688