
PHP-CURL-Guzzle-HTTP-连接复用内核原理
PHP-CURL连接复用内核原理0.写在前面PHP是一个时代的产物,它的底层支持是C语言,因此它在CPU密集型计算或者系统内核调用上有天生的优势,Zend引擎把PHP执行生命期分成了五个阶段1,这五个阶段并不是全部都能常驻进程,这种模式下,对于很多使用场景会造成不好的影响,比如网络IO.对于网络IO中的HTTP请求 , 很多工程师使用 php-curl 系列函数 . 所以这篇文章将从内核角度...

高级编程:PHP扩展的 INI 配置文件操作
Extension INI Entries (扩展INI配置项)Defining php.ini directives (i.e., INI entries) in an extension is easy. Most of the work involves setting up the global struct explained earlier in Section 14.10.3 ...

PHP扩展开发1:代码框架搭建
文章系列介绍本系列文章主要围绕PHP扩展开发,PHP扩展的重要性毋庸置疑,我们既可以编写PHP模块来帮助提升PHP日常的计算性能、丰富PHP的功能模块,也可以编写基于Zend引擎的扩展,做一些更加高级的PHP扩展开发,例如运行时监控、性能分析。篇1:扩展代码框架搭建对于PHP扩展的开发过程,第一步应该是如何搭建一个完善的代码框架,便于我们踏出第一步,好在PHP源代码中已经包含了一系列的工具,...

php-fpm的pool设置
LNMP架构——php-fpm的进程pool设置php-fpm的poolphp-fpm.conf可以设置多个pool,在其中一个pool资源耗尽,会导致其他站点无法访问资源,报502错误。有必要把站点进行分离,分别使用单独的pool。修改php-fpm配置文件代码新增一个pool代码设置# 文件地址:/usr/local/php-fpm/etc/php-fpm.conf
# vim php-...

UdsPipeTun使用教程
背景NetPipeTun是一个转发HTTP请求的中间件,因为传统的HTTP请求速度很慢,PHP对于Keep-alive支持的力度又不够,此中间件把用户GET或者POST请求序列化为完整的HTTP数据包、并把数据包通过Unix domain socket等高速通路进行传送,达到快速通信的目的。结构描述中间件结构包括client、config、exception、http、reponse、req...

多线程编程 - PHP 实现
前言前些天帮同事查一个问题,第一次接触到了 PHP 的多线程,原以为 PHP 普遍都是单线程模型,并不适合多线程领域,花些时间翻了几个多线程的项目源码之后,发现 PHP 的多线程也颇有可取之处,活用起来,用来解决某些问题竟然非常适合。于是找了几篇文章看了下 PHP 多线程 TSRM 机制的实现,也有所收获,详情可以查看下面的参考文章。本文对比多进程介绍了下多线程的优势和适用场景,提出了一种巧...

微服务:请求熔断原理
伴随微服务,出现了很多新鲜的名词,其实剥去外衣并没有那么高大上。今天要谈到的,叫做”熔断”,一个典型的开源实现是Hystrix(JAVA实现)。背景一个分布式系统中,服务间互相调用错综复杂,假设某个基础服务宕机,那么就会导致若干上游调用方出现访问超时,进而引起上游重试,导致宕机的基础服务遭受到数倍的流量放大,更加无法恢复服务。这种恶劣的情况并不会就此结束,上游因为调用基础服务超时而变慢,导致...

代码封装:Pecl_Http 与 UDS 客户端封装
1. 背景描述Pecl/HTTP是一个PHP扩展,历史非常悠久了,从2005年至2018年不断完善其功能,它主要帮助PHP对于HTTP请求的相关操作。不同于CURL,其具有更丰富的扩展接口,既包括平常的请求,也包括对于HTTP数据的封包或拆包操作。对于PHP和HTTP,大部分程序员关心的如何完成一个请求。但是更深一步,我们会发现HTTP数据包的文件格式也很重要,比如传统的HTTP请求性能很弱...