php守护进程热更新,如何通过PHPStorm配置Hyperf热更新开发环境

通过 PHPStorm 配置热更新开发环境

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

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

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

创建 reload.sh

首先我们先在 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 [

'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

9911c3974cf9e40fc0cbaa87272bfc3b.png

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

6fbb002fd694d1432578188af978b40f.png

完成

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

d2e48cd63119e8c80cb42f43abf4059f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yii2 使用 RESTful 写API接口 实例

Yii2 使用 RESTful&#xff1f;其实 Yii2 框架本身就对 RESTful 是友好支持的&#xff0c;具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-quick-start)&#xff0c;或者去看源码&#xff0c;都是可以的注意: 我们使用resTful的同时,需要借助于测试工具进行地…

php elements,wd elements se和wd elements的区别是什么

区别&#xff1a;1、WD Elements SE有两个USB3.0接口&#xff1b;而WD Elements有一个USB3.0接口&#xff0c;一个USB2.0接口。2、WD Elements SE配置有数据加密功能&#xff1b;而WD Elements不具备存储数据加密功能。本文操作环境&#xff1a;windows10系统、thinkpad t480电…

Blog建设好了,好好看φ(゜▽゜*)♪

来cnblogs写博果然没错&#xff0c;不枉费我几个小时&#xff0c;最后出来的界面还是很好看的。当然了需要一点前端基础&#xff0c;这样改起来才顺心顺手。 转载于:https://www.cnblogs.com/icequarze/p/8468483.html

java二维数组遍历排序,实现二维数组的按次序排序!!!

package com.huaxia.java2se;import java.util.Arrays;public class Array{ static int c0;static int a[][]new int[4][4];int ii0;/** 单行的排序方法由大到小*/public static void Arraysinglesort(int a[][]){int i, j,k;for( i0;ifor(j0;jint temp;for(k0;kwhile(a[i][k]}…

【热修复】Andfix源码分析

转载请标注来源&#xff1a;http://www.cnblogs.com/charles04/p/8471301.html Andfix源码分析 0、目录 背景介绍源码分析方案评价总结与思考参考文献1、背景介绍 热修复技术是移动端领域近年非常活跃的一项新技术&#xff0c;通过热修复技术可以在不发布应用市场版本&#xff…

matlab求心率,心电图QRS波检测(计算心跳次数)

YURA2021-2-18 9:54:53谢谢&#xff01;&#xff01;&#xff01;yangaichimantou2021-1-6 21:01:21谢谢分享楼主llyy12332020-12-21 18:39:55感谢楼主分享songxin2020-12-16 21:55:38感谢楼主分享4444_X2020-9-14 21:25:27感谢楼主分享4444_X2020-9-14 21:25:26感谢楼主分享44…

已知矩阵 matlab,在MATLAB中,已知矩阵A,那么A(:,2:end)表示

摘要&#xff1a;已知供输工方、表示添资料准加剂、加及标应提原料有关的()的出国法等使用&#xff0c;品”“进办理报检时口食。已知信息系统模型不包逻辑括(。...已知信息系统构化中的结方法设计&#xff0c;矩阵细设和详总体计两阶段一般分为设计&#xff0c;总体主要建立其…

虚拟域名配置

1、进入 C:\Windows\System32\drivers\etc 这个文件夹&#xff0c;找到hosts文件&#xff0c;做相应配置&#xff1b;比如:配置school.com # localhost name resolution is handled within DNS itself. 127.0.0.1 school.com# ::1 localhost2、找到 apach…

文件源码读取 php伪协议,include(文件包含漏洞,php伪协议)

点击tips查看元素&#xff0c;也并没有有用的信息&#xff0c;联想到题目,include想起了文件包含漏洞。构造payload?file/../../../../../../flag.php没有返回东西。看完wq学到了一个新姿势&#xff1a;php伪代码构造payload?filephp://filter/readconvert.base64-encode/res…

vue 中 created 和 mounted 钩子生命周期 问题

正如前面一篇博客中遇到的钩子生命周期问题 &#xff0c;如果对基本的原理不清楚 就很难弄懂 这个问题 到底是什么原因造成的。所以今天我们就来简单的研究下 这两个钩子到底是个啥意思 created 钩子 mounted 钩子 我不想写了 可以参考这个 说的也挺明白的 https://segmentfa…

php beast linux安装,windows centos php-beast 安装

https://github.com/imaben/php-beast-binarieswindows下 可以直接在这里下载dll根据自己的php版本 还有是不是线程安全的 来选择下载对应的放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置extensionphp_beast_…

Echarts自定义折线图例,增加选中功能

用Echarts图表开发&#xff0c;原本的Echarts图例不一定能满足我们的视觉要求。 下面是Echarts 折线图自定义图例&#xff0c;图例checked选中&#xff0c;相应的折线线条会随之checked&#xff0c;其余未选中的图例对应的折线opacity会降低&#xff0c;&#xff08;柱状图&…

php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...

基于JQuery制作的产品广告效果效果图.如下&#xff1a;动画效果介绍&#xff1a;这组广告效果是打开页面后图片会自动播放&#xff0c;从1-5共计5张图片&#xff0c;如果属标放到右下角的1、2、3、4、5列表上&#xff0c;可以自由进行切换到自己想看的图片上去。图片切换是由下…

python之函数基础

函数是对程序逻辑进行结构化或过程化的一种编程方法。能将整块代码巧妙地隔离成易于管理 的小块&#xff0c;把重复代码放到函数中而不是进行大量的拷贝--这样既能节省空间&#xff0c;也 有助于保持一致性&#xff0c;因为你只需改变单个的拷贝而无须去寻找再修改大量复制代码…

Python on the Way, Day1 - Python基础1

一、 Python介绍 python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年的圣诞节期间&#xff0c;吉多范罗苏姆为了在阿姆斯特丹打发时间&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承 Python可以应用于众多领域&#…

java发送QQ群邮件,简单两步使用node发送qq邮件

node发送邮件非常简单,这里只做qq的演示,你可以举一反三.使用nodemailer包let transporter nodemailer.createTransport({// 使用qq发送邮件// 更多请查看支持列表&#xff1a;https://nodemailer.com/smtp/well-known/service: qq,port: 465, // SMTP 端口secureConnection: …

python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的

变量介绍。变量就是代表某个数据(值)的名称&#xff0c;简单点说变量就是给数据起个名字。变量的特点。1)变量是计算机内存中的一块区域&#xff0c;变量可以存储规定范围内的值&#xff0c;而且值是可变的。2)在创建变量时会在内存中开辟一个空间。基于变量的数据类型&#xf…

【BZOJ2095】【POI2010】Bridge 网络流

题目大意 ​  给你一个无向图&#xff0c;每条边的两个方向的边权可能不同。要求找出一条欧拉回路使得路径上的边权的最大值最小。无解输出"NIE"。   \(2\leq n\leq 1000,1\leq m\leq 2000\) 题解 ​  我们先二分答案\(ans\)&#xff0c;把边权大于\(ans\)的边…

space index.php 7-14,SpacePack高效部署PHP生产环境

SpacePack 基于 Docker 为了快速部署 PHP 生产环境而产生的项目&#xff0c;它包含了一般项目中常用的组件&#xff0c;能够在最短的时间内产生一个完善并且优化过的 PHP 生产环境。容器版本SpacePack 默认包含了 OpenResty 1.13、PHP 7.2、MariaDB 10.3、Memcached 1.5、Redis…

【XSY2469】graph 分治 并查集

题目大意 给你一张\(n\)个点\(m\)条边的无向图&#xff0c;问删去每个点后&#xff0c;原图是不是二分图。 \(n,m\leq 100000\) 题解 一个图是二分图\(\Longleftrightarrow\)该图不存在奇环 可以用并查集&#xff0c;维护每个点到根的距离 如果删除\(x\)点&#xff0c;就要把所…