1. 程式人生 > >windows環境下用workerman做系統整合

windows環境下用workerman做系統整合

系統整合側重於實際應用,類似於把已經存在的音箱,功放,效果器,CD機等各種功能元件連線在一起,構成自己的音響系統,所需要做的工作僅僅是構建一些連線線而已,而無須自己去製造音箱,功放這功能元件。這對於一行程式碼都不願意寫的懶人,或者程式設計能力不太強的人員來說是個比較好的工作方式。

系統整合的關鍵是程式之間的資料交換,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

選中install.bat-->右鍵-->以管理員身份執行(A);
選中startAll.bat-->右鍵-->以管理員身份執行(A);
此電腦-->右鍵-->管理-->服務和應用程式\服務,在右側視窗可以看到剛才安裝好的四個服務

開啟瀏覽器,在位址列鍵入:localhost:55151 成功進入到聊天系統
參考:http://blog.csdn.net/sapperlab/article/details/53574688