穷则独善其身,达则兼济天下

工匠之路

标签 高级编程 下的文章

开源项目:基于UDP协议的日志记录系统(LogDarts)

背景介绍日志对于任何一个需要稳定运行的系统都弥足珍贵,如何构造一个高性能的统一日志平台,首先需要解决的是“记录”,如何用最快、性能损耗最小的方式来记录日志?UDP是一个不错的选择:首先UDP通道的带宽需求小,能达到很好的实时性;其次UDP不需要维持连接,在网络传输中的动作少。有人会说,UDP是不稳定传输、使用时数据风险大。对于这点,我们需要考量具体使用环境,在我们的日志系统中,每台机器都会运...
July 8, 2018

源码阅读:PHP TSRM 线程安全管理器

TSRM 简介在查看php源代码或开发php扩展的时候,会出现大量 TSRMLS_ 宏字样在函数参数的位置,这些宏就是Zend为线程安全机制所提供的(Zend Thread Safety,简称ZTS)用于保证线程的安全 , 是防止多线程环境下以模块的形式加载并执行PHP解释器,导致内部一些公共资源读取错误,而提供的一种解决方法。什么时候需要用 TSRM只要服务器是多线程环境并且PHP以模块的...

PHP扩展开发2.2:线程安全

背景介绍线程安全是编程中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。一般来说,线程安全的函数应该为每个调用它的线程分配专门的空间,来储存需要单独保存的状态(如果需要的话),不依赖于“线程惯性”,把多个线程共享的变量正确对待(如,通知编译器该变量为“易失(volatile)”型,阻止其进行一些不恰当的优化),而且,线程安全的函数一...

PHP扩展开发2.1:PHP生命周期

1. PHP SAPI无论是Web模式、FastCgi模式、CLI模式,PHP的工作原理都是一样的,都是作为一种SAPI在运行(Server Application Programming Interface : the API sed by PHP to interface with Web Servers)。当我们在终端敲入php这个命令时候,它使用的是"”command lines a...
July 5, 2018

PHP扩展开发1:代码框架搭建

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

UdsPipeTun使用教程

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

GoLang 汇编

引言在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于plan9,此方面的介绍很多,就不进行展开了。我们WHY和HOW开始讲起。golang汇编相关的内容还是很少的,而且多数都语焉不详,而且缺乏细节。对于之前没有汇编经验的人来说,是很难理解的。而且很多资料都过时了,包括官方文档的一些细节也未及时更新。因此需要掌握该知识的人需要仔细揣摩,反复实验...