phpstom可以配置php环境吗_通过 PHPStorm 配置热更新开发环境

在开发 Hyperf/Swoole 这样的持久化应用时,每当应用代码发生了变更时,都需要重启应用使代码生效,尽管在开发 CLI 应用时这也是一个正确且合理地操作,因为我们开发过程中仍需要关注 stdout 输出的信息以判断应用的运行状态与结果。但这跟我们原来开发 PHP-FPM 应用的习惯有很大的差异,如果我们希望保持像 PHP-FPM 下的开发习惯,保存代码即生效的话,都能怎么做呢?

根据「Hyperf 官方文档 - 协程组件库」一章内的介绍,有几款第三方工具可以提供该功能的支持,但如果我们使用的是 PHPStorm 来进行开发,那么我们可以直接通过 PHPStorm 里面的 FileWatcher 来实现该功能。

实现的原理就是通过 FileWatcher 来监听项目下的文件变更,然后执行一个 shell 脚本,通过这个 shell 脚本来进行应用的重启工作。

## 创建 reload.sh

首先我们先在 skeleton 的 bin 目录下创建一个 `reload.sh` 文件,并写入以下 Shell 代码:

```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 [

'settings' => [

'daemonize' => 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

![](/storage/article-column/cMDfd7vw5q1P5I5qe7VhyjmHdobXRfVAxILC6tMx.jpeg)

然后在列表我们要再将我们刚才创建的 `watcher` 勾选为 `enabled`

![](/storage/article-column/YS4ksjleC2w0RbaGZwQyjPVo8fdVob7ot3J5VubL.jpeg)

# 完成

至此,我们便完成了所有的配置,此时我们仅需通过 `sh bin/reload.sh` 命令来启动应用,随后更改文件我们便会在 IDE 上看到如下的 output 窗口输出重启的信息了。

![](/storage/article-column/GWnYZeOJaX69r8Zmr3EwXWfZ5vpt1MAoh5D89vIL.jpeg)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值