发布了文章2023-06-29
图1.1.1 一个HTTP请求的流转过程在网络应用场景下,PHP并没有像Golang那样实现http网络库,而是实现了FastCGI协议,然后与web服务器配合实现了http的处理,web服务器来处理http请求,然后将解析的结果再通过FastCGI协议转发给处理程序,处理程序处理完成后将结果返回...
发布了文章2021-03-18
最近项目需要在Hyperf框架下封装Redis分布式锁,于是基于RedLock算法封装了 RedLock-Hyperf SDK,目前除支持简单对象调用外,也支持了在Hyperf框架下通过AOP注解来实现。基于Redis实现一个分布式锁,相信这对你来说并不是难事。多数人会使用 setnx + expire + del 命...
发布了文章2021-01-12
在Hyperf官方文档的服务器要求中提到Swoole PHP 扩展 >= 4.5,并关闭了 Short Name并且,在文档的常见问题中也会看到Swoole 短名未关闭这一个tag。我想问了,那为什么hyperf一定要关闭掉Swoole的协程短名称呢首先,我们先看一下什么是Swoole的协程短名称所有的 Sw...
赞了文章2020-08-11
在最新版本的 Swoole Library 中底层提供了一个更便捷的协程并发管理工具:Coroutine\Barrier 协程屏障,或者叫协程栅栏。基于 PHP 引用计数和 Coroutine API 实现。相比于Coroutine\WaitGroup,Coroutine\Barrier使用更简单一些,只需通过参数传递或者闭包的use语法...
赞了文章2020-07-01
在 PHP 语言中操作字符串和数组一般使用 str_* 和 array_* 的系列函数,这些函数由于历史原因,命名和参数顺序风格不统一,广为开发者诟病,PHP 语言标准库中暂未提供 OO 风格的 Array 和 String 类库,开发者使用起来不是很便利,在 Swoole 中我们提供了一 swoole_a...
发布了文章2020-06-02
之前做项目用到了Hyperf/Crontab组件来进行秒级的数据清洗,最近又在做定时任务的拆分,于是就打算过一遍组件源码加深理解,顺便构思一下如何在此基础上搭建Hyperf/Crontab的任务调度功能。Crontab本质上是一个随Server启动的自定义进程,所以接下来我们将从启动和执...
发布了文章2019-12-19
~表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0~1.2 代表 1.2 <= 版本号 <2.0
发布了文章2019-11-14
最近在学习Fast-CGI的协议具体内容,用到TCPDUMP来抓一下nginx发给php-fpm的tcp包。于是自己就要在MAC上搭一个简单的环境,跑个小demo。nginx,php咱都有,回来配个nginx的vhost就成了,谁知道最后在vhost上折腾了半天。难顶。