php
文章平均质量分 68
主要以PHP高级知识为主
森叶
谷歌插件开发者 偏前端全栈开发工程师 熟练使用PHP、Python、Javascript、Java 四种语言
王森出品 必属精品
展开
-
phpstorm中使用 phpunit 时的配置和代码覆盖率测试注意点
在使用 Composer 中,修改了 composer.json 中的 autoload-dev 配置(例如 PHPUnit 版本),想要让这些修改生效,需要运行哪些 Composer 命令?原创 2023-12-12 00:40:04 · 176 阅读 · 0 评论 -
Java 和 PHP GC 的差异和差异出现的原因
垃圾回收(Garbage Collection,GC)是编程语言中的一项关键功能,用于自动管理内存,防止内存泄漏和提高程序的可靠性。不同的编程语言采用不同的GC机制,以下是对Go语言和Python的GC机制的概述。Go语言的GC机制具有并发性、分代回收、标记-清除算法和三色标记法等特点。它能够在程序运行时执行垃圾回收,不会导致停顿,适用于高并发应用。分代垃圾回收提高了回收效率,标记-清除算法处理循环引用,而三色标记法减少了标记和清除的阶段。Go语言还提供了灵活的垃圾回收时间控制和内存分配优化。原创 2023-09-07 11:59:03 · 418 阅读 · 0 评论 -
Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能
为何 Hyperf 能够在两个端口上监听 WebSocket 连接?源码角度来看,在配置了多个 Servers 时,实际上,只启动了一个 Server注:我之前接触的代码都是启动一个服务绑定一个端口,之前也看过 swoole 扩展的文档,但是没留意服务和监听端口也是分离的,这启发了我一种思维,代码凡是能继续拆分的,就继续拆分,这样代码就会有更多的灵活,每个功能都能进行扩展,将服务和端口进行拆分之后,就可以在一个 Server 绑定多个 Port,每个 Port 又能有独立的事件。原创 2023-08-21 11:33:01 · 1403 阅读 · 0 评论 -
PHP匿名类的使用场景有哪些?PHP匿名类怎么用?有什么好处?PHP匿名类如何在运行时动态生成?
在一些特定场景下,使用匿名类可以代替具名类,这主要是因为匿名类具有一些独特的特性,例如可以动态创建类、作为回调函数参数传递、创建一次性对象等等。具体来说,匿名类可以在创建对象时定义类的结构,可以方便地为不同的对象提供不同的实现。例如,在使用回调函数时,匿名类可以作为回调函数的参数,动态地创建一个对象,而无需预先定义具名类。此外,匿名类还可以被用于创建一次性对象,这些对象通常只在一个方法或函数内部使用一次,因此不需要为它们定义一个具名类。总之,匿名类提供了更为灵活的方式来定义对象,并能够满足特定场景下的需求。原创 2023-04-24 14:42:48 · 583 阅读 · 0 评论 -
应用接口版本兼容设计和使用原则
早期开发时,由于选型架构等问题,老旧接口仍然要正常运行,需要逐步引导客户使用新版,但是接口由新团队进行开发,比如 PHP 转成了用 Go 来开发,响应更快,并发更大,新的接口又和老的接口逻辑相近,但传入传出都不相同,这种巨大差异,不应该在原版接口中改动,容易产生灾难性的影响,因此,我们会在 url 上进行处理,例如 url 中接口版本为/api/v1,等到新接口采用/api/v2,这样就有效的改善了新版用户的无缝衔接,接口版本非常少,如果公司接口版本搞得很多,绝对出问题了。原创 2023-03-15 23:24:17 · 1278 阅读 · 0 评论 -
Yii2下PHP远程调试PHP5.6/7.2与Xdebug2.5/2.7/3.0 在PHPSTORM下的差异化表现
因为yii2框架,设计复杂度非常高,加上php代码的弱类型语言结构,在代码非常复杂的情况下,不采用调试的方式来看源码调用栈,几乎是灾难性的,所以我们必须解决phpstorm下的远程调试问题。xdebug.profiler_output_dir = /tmp/xdebug #可以删除,profiler是个分析器会。xdebug.trace_output_dir=/tmp/xdebug #可以删除,跟踪日志也没有必要加上。docker下安装php,xdebug的远程配置,phpstorm的远程配置。原创 2023-01-12 15:05:16 · 546 阅读 · 0 评论 -
PHP闭包的实际应用场景
PHP 闭包在面试中,很多人就是知道这个形式,一旦问他们在那些场景下使用,基本都回答不上来,整个CSDN上有对闭包源码实现加以解读的,也有举例闭包的几种用法,我这里补充几个应用场景,进一步将闭包的应用进行落地。原创 2022-12-26 12:03:52 · 349 阅读 · 0 评论 -
用维度概念来定义初级、中级、高级程序员
网络上众说纷纭,大都站立在对某一技术的知识掌握量上来界定,或者有些人说着说着,发现无法自圆其说,然后就说这三种人就是一种叫法,你觉得你是高级你就高级了,从概念上讲,这三者之间必然有质的区别,单纯以量是无法划分的,为此,我来定义这三个边界。原创 2022-12-21 17:59:37 · 747 阅读 · 0 评论 -
mac m1 安装docker docker 安装php 5.6 和 7.2 避坑指南
配置完成后,本地就可以使用远程的php解释器了,此外采用docker共享文件夹的方式,可以做到代码修改的是同一个位置,达到了无需再将phpstorm上传到docker中去。在配置xdebug.ini时,参照以下截图,docker访问宿主机时必须是要docker自己提供的host才能访问,再次强调。这里有各种php版本绝对够用了,还有php完整版的扩展,非常方便,虽然没有python的conda那么屌,但也是解决方案。下载zip,解压,然后按照github的步骤,一步步搞下来,就装成功了。原创 2022-12-10 12:35:09 · 3517 阅读 · 0 评论 -
阿里云OSS图片存储跨域配置 OSS CDN跨域配置截图
采用了OSS的CDN加速,会导致请求的同一个URL被随机分发到源服务器和CDN服务器,因为CDN服务器并未配置跨域,导致随机到CDN服务器时,就会报跨域错误,而随机到源服务器时就没事,这就造成时好时坏,让我当时完全摸不着头脑,记录下来...原创 2020-07-30 17:13:31 · 1847 阅读 · 0 评论 -
PHP foreach使用 & 引用详细过程解读
解决这个问题的方式,则是及时的将引用释放掉unset($a),与下面的$a变量不混淆,只要及时的unset($a),再次出现$a时,php会自动地将$a设置为一个普通变量,并分配它自己的地址和值空间,每次foreach都是提取数据往$a的值中拷贝。这个过程很清晰了,在第一次循环后,$a作为引用,最后一次循环时,是直接把$arr元素的最后一个地址赋值给了$a,所以$a是一个引用,且指向最后$arr的最后一个地址,从分界线以前就能发现$a输出的是9。这样讲解就清晰明了了。原创 2022-11-10 11:09:15 · 948 阅读 · 0 评论 -
php-fpm,uwsgi,tomcat,hyperf 处理区别
从php迁移到python过程中,我想不明白为何php-pfm能做到不重启就能加载代码,而uwsgi却必须重启,两者之间的区别是什么?两者为和要做出这种差异?那uwsgi和hyperf框架是一样的吗?为何最早期的servlet能够调用服务器级别的Application?原创 2022-10-14 19:25:38 · 1245 阅读 · 2 评论 -
PHP转GO 的正确打开路径 从hyperf,ES6,Python 到 Go
彻底打破PHP直接转GO语言的误区,充分将PHP转GO的正确方式给出,按照此渠道直接打通任督二脉,从此啥高级语言都不再是拦路虎原创 2022-04-06 17:17:32 · 3727 阅读 · 1 评论 -
git 基于码云webhook 方式,结合nginx,php建立git自动更新
nginx.conf反向代理配置:server { listen 80; server_name git.XXX.com; #这里域名自己自定义 location / { proxy_pass http://127.0.0.1:9666; # 转发规则 proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求 proxy_set_header X-Real-IP $re...原创 2020-11-23 13:52:16 · 200 阅读 · 0 评论 -
消息队列rabbitmq php7.2安装 详细教程 erlang和rabbitmq要用rpm安装 centos7和windows wamp3
RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统,底层基于Erlang语言。一:centos7安装RabbitMQ这玩意儿安装很扯淡,官方推荐rpm安装,rpm安装本身是最简单的,但是安装RabbitMQ却不简单,很可能需要修改仓库地址。不同linux版本不一样,centos6和centos7也不一样。我这里不用rpm,手动编译Erlang,然后选择编译好的RabbitMQ。1:安装Erlang1):先安装几个必要的插件$ yum -y install gcc .原创 2020-06-16 15:28:22 · 449 阅读 · 0 评论 -
解决phpstorm使用自己安装的svn命令,这里用到的是乌龟SVN,解决C:\Program Files空格问题
巧妙点在于原来的C:\Program Files 这里有个空格,网上找到有个PROGRA~1这种神写法,顺利的解决了问题,从此爽歪歪了原创 2020-06-05 16:23:55 · 329 阅读 · 0 评论 -
php 扩展函数openssl_decrypt 使用注意事项
一般都采用原生数据进行处理,通过text/json方式传输,避免base64数据被urlencode进行转码$key和$iv都是二进制的,不是二进制,要转成二进制,再传入进去$data1 在原生数据状态下,必须先从base64转成二进制,否则解析不了至于另外一种base46模式,建议不要使用就对了,原生处理最简单openssl_decrypt($data1, "AES-128-CBC", $key, OPENSSL_RAW_DATA, $iv)...原创 2020-05-21 12:45:23 · 8352 阅读 · 0 评论 -
phpstorm开发器配置babel支持ES5开发,避免搭建node.js环境
安装node.js npm install --save-dev babel-cli npm install babel-preset-es2015 --save-dev 设置phpstorm接受的语言是ES6,不然写es6语法提示报错: 配置Babel,在根目录中创建.babelrc文件,内容如下 配置watchers 效果就是任何工程文件内新建一个.es6的文件都会...原创 2019-08-23 18:19:01 · 122 阅读 · 0 评论