如何通過PHPStorm配置Hyperf熱更新開發環境

通過 phpstorm 配置熱更新開發環境

在開發 Hyperf/swoole 這樣的持久化應用時,每當應用代碼發生了變更時,都需要重啟應用使代碼生效,盡管在開發 CLI 應用時這也是一個正確且合理地操作,因為我們開發過程中仍需要關注 stdout 輸出的信息以判斷應用的運行狀態與結果。但這跟我們原來開發 php-FPM 應用的習慣有很大的差異,如果我們希望保持像 PHP-FPM 下的開發習慣,保存代碼即生效的話,都能怎么做呢?

根據「Hyperf 官方文檔 – 協程組件庫」一章內的介紹,有幾款第三方工具可以提供該功能的支持,但如果我們使用的是 phpstorm 來進行開發,那么我們可以直接通過 PHPStorm 里面的 FileWatcher 來實現該功能。

實現的原理就是通過 FileWatcher 來監聽項目下的文件變更,然后執行一個 shell 腳本,通過這個 shell 腳本來進行應用的重啟工作。

創建 reload.sh

立即學習PHP免費學習筆記(深入)”;

首先我們先在 skeleton 的 bin 目錄下創建一個 reload.sh 文件,并寫入以下 Shell 代碼:

#!/bin/bash basepath=$(cd?`dirname?$0`;?pwd) cd?$basepath if?[?-f?"../runtime/hyperf.pid"?];then cat?../runtime/hyperf.pid?|?awk?'{print?$1}'?|?xargs?kill?&&?rm?-rf?../runtime/hyperf.pid?&&?rm?-rf?../runtime/container fi php?hyperf.php?start

這里的 shell 腳本所做的事情就是判斷 ./runtime/hyperf.pid 文件是否存在,如果存在則根據這個 pid 文件來 kill 掉已運行的應用,并刪除掉這個 pid 文件,隨后通過執行 php bin/hyperf.php start 命令來啟動應用

設置應用為守護進程運行

由于設置了熱更新,那我們也需要把應用設置為守護進程運行,在 Hyperf 里可以通過在 config/autoload/server.php 的 settings 中增加 daemonize 并設置為 true,參考配置如下:

<?php // 這里省略了其它配置 return [     &#39;settings&#39; =>?[ ????????'daemonize'?=&gt;?1, ????], ];

配置 FileWatcher

接下來我們在 PHPStorm 中配置 FileWatcher 的規則,通過 Preferences -> Tools -> File Watchers 進入配置頁面,然后點擊底部的 + 添加一個配置,參考配置如下:

Name:?php File?Type:?PHP Scope:?Project?Files Program:?sh Arguments:?$ProjectFileDir$/bin/reload.sh Show?Console:?Always

如何通過PHPStorm配置Hyperf熱更新開發環境

然后在列表我們要再將我們剛才創建的 watcher 勾選為 enabled

如何通過PHPStorm配置Hyperf熱更新開發環境

完成

至此,我們便完成了所有的配置,此時我們僅需通過 sh bin/reload.php 命令來啟動應用,隨后更改文件我們便會在 ide 上看到如下的 output 窗口輸出重啟的信息了。

如何通過PHPStorm配置Hyperf熱更新開發環境

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享