作者归档:salmonl

关于salmonl

成长,长成自己的样子。微博@动机在北京,欢迎来玩~

Pthreads扩展实现PHP多线程学习笔记

一、关于pthreads扩展

PHP本身不支持多线程,如果想再CLI模式下实现多线程,需要通过扩展pthreads。pthreads 是一组允许用户在PHP中使用多线程技术的面向对象的API。基于Posix Threads。

注:
POSIX(Portable Operating System Interface)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称, 也叫可移植操作系统接口

POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。

0、PHP手册说明pthreads
1、github地址
https://github.com/krakjoe/pthreadsgithub中有很多example可以参考。

继续阅读

PCNTL扩展实现PHP多进程学习笔记

第一部分 初识PCNTL扩展

一、介绍

0、PCNTL是PHP进程控制扩展,是PHP源码中自带的扩展,支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。(也就是说该扩展不能在Windows下使用)

1、编译安装PHP,在生成编译文件的时候带上–enable-pcntl即可,这样安装PHP中就会有这个扩展。

php -m | grep pcntl
pcntl

继续阅读

《全球通史》阅读笔记

《全球通史》(A Global History:From Prehistory to the 21st Century)是一部经典的世界历史著作,作者是美国历史学家[斯塔夫里阿诺斯]。全书共8个部分,44章节。

围绕不同文明的演进,以及这些文明不同命运的宏观思考展开。逐步介绍了公元500年之前欧亚大陆古典文明,公元500–1500年欧亚大陆中世纪文明,1500–1763西方文明扩张,1763-1914西方据优势地位时的世界,1914以后的世界。用了2020年第一季度的三个月,粗略的翻了一遍,只能说越早读越好。

继续阅读

Redis和Memcached区别

Part1 特点
一、Memcached
0、多线程
1、不支持持久化
2、只支持string类型
2、过期策略是惰性删除

二、Redis
0、单线程
1、支持持久化
2、类型丰厚,都是精心设计的高效数据结构
3、过期策略是惰性删除和定期删除。
4、支持集群
继续阅读

nginx_lua为什么比PHP性能高

之前做过测试用nginx_lua实现简易的API是PHP的8倍,线上复杂逻辑API是PHP的4倍。

最近在回顾之前实践经验的时候,有一个问题一直想来想去,之前并没有深入思考过,为什么nginx_lua的性能比PHP高这么多?

以下是最近思考的以下原因:
0、nginx_lua是把lua作为nginx的一个模块,是异步非阻塞的方式
1、lua运行时占用内存特别少。
2、Openresty是让Web服务直接跑在Nginx服务内部,充分利用Nginx非阻塞I/O模型。
继续阅读

Charles抓包小结

使用Charles抓包,认为只是一个工具,没有深究过,用一点探索一点,换个手机配置一遍发现竟然很多原则性的东西都不太清楚。

本来打算整一篇完整的配置过程,后来发现了很多整理极其优秀的文章。故而,这里就总结一些抓包原理和配置原理,具体操作细节可参考文末的文章。

说明:Charles是付费软件,可以试用30天,在官网https://www.charlesproxy.com下载,可以找破解的charles.jar包替换, 在线生成jar包工具https://www.zzzmode.com/mytools/charles/

覆盖安装的charles.jar即可

mv ~/Desktop/charles.jar /Applications/Charles.app/Contents/Java

注:官网下载Charles,有时候比较慢,可以在百度网盘下载。【链接地址 密码:wn7a】

一、抓包原理小结
抓包全称”抓取数据包”,而数据包是在网络中传输格式化数据(以一定的格式封装、分组、打包)的单位。

抓包软件Charles其实就是一个HTTP代理,这里代理屹立在客户端和服务端之间,指定的请求先通过Charles, 然后在到达服务器。
继续阅读