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,一经查实,立即删除!

相关文章

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电…

【热修复】Andfix源码分析

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

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

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

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

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

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 on the Way, Day1 - Python基础1

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

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…

云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...

下载phpdemo算是跑起来了&#xff0c;现在就要考虑租户系统如自身验证token的问题了。1、先介绍下我的代码目录2、文件执行的时序图和流程图2、代码demotest.phpfunction curl_request($url,$post,$cookie, $returnCookie0){$curl curl_init();curl_setopt($curl, CURLOPT_URL…

php获取h5视频直链,一种H5播放实时视频的方法与系统与流程

本发明涉及播放实时视频&#xff0c;尤其涉及一种h5播放实时视频的方法与系统。背景技术&#xff1a;h5是指第5代html&#xff0c;也指用h5语言制作的一切数字产品。所谓html是“超文本标记语言”的英文缩写。“超文本”是指页面内可以包含图片、链接&#xff0c;甚至音乐、程序…

基础题

1&#xff0c;别名&#xff0c;内部&#xff0c;外部&#xff0c;hash优先级&#xff1f; 2&#xff0c;screen协助 1.一台screen -S 协助名称 2.另外一台screen -ls 列出目前开的协助会话&#xff08;session&#xff09;&#xff0c;找到上面协助名称对应的session号。 3. sc…

大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)

一.HBase的表结构和体系结构 1.HBase的表结构 把所有的数据存到一张表中。通过牺牲表空间&#xff0c;换取良好的性能。 HBase的列以列族的形式存在。每一个列族包括若干列 2.HBase的体系结构 主从结构&#xff1a; 主节点&#xff1a;HBase 从节点&#xff1a;RegionServer 包…

linux内核网络钩子函数使用,Linux内核IOCTL网络控制框架实现实例分析

4.6、inet_ioctl函数由于inet_ioctl函数内容分支很多,但功能、处理不难理解,所以我把一些不常见的内容都省去,挑简单重要的说,完全在于抛砖引玉:static int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){…switch(cmd){case FIOSETOWN://设置属主cas…

(转)递归转非递归的思路和例子

转自&#xff1a;http://blog.51cto.com/cnn237111/1241956 某些算法逻辑&#xff0c;用递归很好表述&#xff0c;程序也很好写。理论上所有的递归都是可以转换成非递归的。如果有些场合要求不得使用递归&#xff0c;那就只好改成非递归了。 通常改成非递归算法的思路&#xff…

iOS - 富文本

iOS--NSAttributedString超全属性详解及应用&#xff08;富文本、图文混排&#xff09; ios项目中经常需要显示一些带有特殊样式的文本&#xff0c;比如说带有下划线、删除线、斜体、空心字体、背景色、阴影以及图文混排&#xff08;一种文字中夹杂图片的显示效果&#xff09;。…

pdf.js 文字丢失问题 .cmaps

使用pdf.js 展示pdf文件 需求&#xff1a;电子发票类的pdf文件&#xff0c;以base64流的形式请求到&#xff0c;在浏览器中展示pdf文件 遇到的问题&#xff1a; 正常展示后&#xff0c;部分文字无法正常显示&#xff0c; 正常显示如下&#xff1a; 文件目录&#xff1a; js:fun…

超过4g的文件怎么上传到linux,怎么免费上传大于4G的文件到百度云 大于4G的文件不开会员怎么上传到百度云...

4G管家appv1.0 安卓版类型&#xff1a;系统工具大小&#xff1a;13.1M语言&#xff1a;中文 评分&#xff1a;10.0标签&#xff1a;立即下载百度云可以非常方便大家存储一些大文件资料&#xff0c;而且百度云的容量也非常高&#xff0c;不过如果你是普通用户的话要想上传大于4g…

android 屏幕坐标色彩,Android自定义View实现颜色选取器

Android 自定义View 颜色选取器&#xff0c;可以实现水平、竖直选择颜色类似 SeekBar 的方式通过滑动选择颜色。效果图xml 属性1.indicatorColor 指示点颜色2.indicatorEnable 是否使用指示点3.orientation 方向horizontal 水平vertical 竖直使用复制 \library\src…\ColorPick…