php webman使用fileboy熱載入

渺小的人类發表於2024-07-10

1.下載fileboy檔案

下載地址:https://gitee.com/dengsgo/fileboy/releases

2.在工作目錄建立一個資料夾,把下載的exr檔案複製一份到資料夾,重新命名為‘fileboy.exe’,新增系統變數PATH:

3.開啟cmd命令視窗執行 fileboy 命令,出現以下圖說明配置成功

4.切換到專案根目錄,執行 fileboy init 。執行後會在根目錄生成一個 filegirl.yaml 檔案。編輯器開啟修改如下

  1. 監聽檔案的格式 改為: .php

2.監聽的檔案有更改會執行的命令 改為: php start.php start

3.特殊指令 增加 - exec-when-start

配置完成後,以後啟動專案只需要在根目錄執行:fileboy 命令就可以了。


完整的配置檔案如下

####################
## 配置檔案說明
## 執行 fileboy 所在的路徑為工作目錄;
## 使用 -filegirl 命令引數可以載入指定路徑的 filegirl 配置(不限定工作目錄),如 "fileboy -filegirl /user/f/go.yml" 或者 "fileboy -filegirl ../../f/go.yml";
####################

# 主配置
core:
    # 配置版本號
    version: 1

# 監控配置
monitor:
    # 要監聽的目錄。必須是工作目錄下的路徑
    # test1       監聽當前目錄下 test1 目錄
    # test1/test2 監聽當前目錄下 test1/test2 目錄
    # test1,*     監聽當前目錄下 test1 目錄及其所有子目錄(遞迴)
    # .,*         監聽當前目錄及其所有子目錄(遞迴)
    includeDirs:
        - .,*

    # 不監聽的目錄。必須是工作目錄下的路徑
    # .idea   忽略.idea目錄及其所有子目錄的監聽
    exceptDirs:
        - .idea
        - .git
        - .vscode
        - node_modules
        - vendor

    # 監聽檔案的格式,此類檔案更改會執行 command 中的命令
    # .go   字尾為 .go 的檔案更改,會執行 command 中的命令
    # .*    所有的檔案更改都會執行 command 中的命令
    types:
        - .php

    # 監聽的事件型別,發生此類事件才執行 command 中的命令
    # 沒有該配置預設監聽所有事件
    # write   寫入檔案事件
    # rename  重新命名檔案事件
    # remove  移除檔案事件
    # create  建立檔案事件
    # chmod   更新檔案許可權事件(類unix)
    events:
        - write
        - rename
        - remove
        - create
        - chmod

# 命令
command:
    # 監聽的檔案有更改會執行的命令
    # 可以有多條命令,會依次執行
    # 如有多條命令,每條命令都會等待上一條命令執行完畢後才會執行
    # 如遇互動式命令,允許外部獲取輸入
    # 支援變數佔位符,執行命令時會替換成實際值:
    #    {{file}}    檔名(如 a.txt 、test/test2/a.go)
    #    {{ext}}     檔案字尾(如 .go)
    #    {{event}}   事件(上面的events, 如 write)
    #    {{changed}} 檔案更新的本地時間戳(納秒,如 1537326690523046400)
    # 變數佔位符使用示例:cp {{file}} /root/sync -rf  、 myCommand --{{ext}} {{changed}}
    exec:
        - php start.php start

    # 檔案變更後命令在xx毫秒後才會執行,單位為毫秒
    # 一個變更事件(A)如果在定義的延遲時間(t)內, 又有新的檔案變更事件(B), 那麼A會取消執行。
    # B及以後的事件均依次類推,直到事件Z在t內沒有新事件產生,Z 會執行
    # 合理設定延遲時間,將有效減少冗餘和重複任務的執行
    # 如果不需要該特性,設定為 0
    delayMillSecond: 2000

# 通知器
notifier:
    # 檔案更改會向該 url 傳送請求(POST 一段 json 文字資料)
    # 觸發請求的時機和執行 command 命令是一致的
    # 請求超時 15 秒
    # POST 格式:
    #    Content-Type: application/json;charset=UTF-8
    #    User-Agent: FileBoy Net Notifier v1.17
    #    Body: {"project_folder":"/project/path","file":"main.go","changed":1576567861913824940,"ext":".go","event":"write"}
    # 例: http://example.com/notifier/fileboy-listener
    # 不啟用通知,請留空 ""
    callUrl: ""

# 特殊指令
instruction:
    # 可以透過特殊的指令選項來控制 command 的行為,指令可以有多個
    # 指令選項解釋:
    #   exec-when-start    fileboy啟動就緒後,自動執行一次 'exec' 定義的命令
    - exec-when-start
    #   should-finish      觸發執行 'exec' 時(C),如果上一次的命令(L)未退出(還在執行),會等待 L 退出(而不是強制 kill ),直到 L 有明確 exit code 才會開始執行本次命令。
    #                      在等待 L 退出時,又有新事件觸發了命令執行(N),則 C 執行取消,只會保留最後一次的 N 執行
    #   ignore-stdout      執行 'exec' 產生的 stdout 會被丟棄
    #   ignore-warn        fileboy 自身的 warn 資訊會被丟棄
    #   ignore-info        fileboy 自身的 info 資訊會被丟棄
    #   ignore-exec-error  執行 'exec' 出錯仍繼續執行下面的命令而不退出

    #- should-finish
    #- exec-when-start
    - ignore-warn

參考:https://www.workerman.net/a/1343

相關文章