从零开始基于go-thrift创建一个RPC服务

2019-07-13
阅读 14 分钟
18.9k
Thrift 是一种被广泛使用的 rpc 框架,可以比较灵活的定义数据结构和函数输入输出参数,并且可以跨语言调用。为了保证服务接口的统一性和可维护性,我们需要在最开始就制定一系列规范并严格遵守,降低后续维护成本。

gRPC入坑记

2019-07-07
阅读 9 分钟
6k
由于gRPC主要是谷歌开发的,由于一些已知的原因,gRPC跑demo还是不那么顺利的。单独写这一篇,主要是gRPC安装过程中的坑太多了,记录下来让大家少走弯路。

PHP技术栈

2019-06-04
阅读 3 分钟
4.7k
本文旨在给要学习 PHP 的新手一个大概的认知轮廓,在心里有个学习的结构,有的放矢,避免走太多弯路。大神请忽略。入门阶段预备知识1、掌握基本HTML、JS、CSS语法;熟悉 Bootstrap。 参考: [链接] [链接] [链接]验收最低标准:模仿写出jd.com或者vip.com首页第一屏内容。2、熟悉Linux命令行 熟悉常用发行版系统(CentOS...

PHPer书单

2019-03-17
阅读 4 分钟
3.6k
想提升自己,还得多看书!多看书!多看书!下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完。共勉吧!当然,如果你有好的书想分享给大家的或者觉得书单不合理,可以去Github 52fhy/phper-book-list 通过pull request 进行提交。不会pull request的同学可以参考:github的pull request是指什么...

PHP之高性能I/O框架:Libevent(一)

2018-07-02
阅读 8 分钟
3.3k
Libevent 是一个用C语言编写的、轻量级的开源高性能I/O框架,支持多种 I/O 多路复用技术: epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。PHP提供了对应的扩展 libevent、 Event 。

PHP多进程系列笔记(五)

2018-06-26
阅读 8 分钟
4.2k
前面几节都是讲解pcntl扩展实现的多进程程序。本节给大家介绍swoole扩展的swoole_process模块。 swoole多进程 swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。 首先,确保安装的swoole版本大于1.7.2: {代码...} 注意:swoole_process在最新的1.8.0版本已经禁止在Web环境中使用了,所以也只能支持...

PHP多进程系列笔记(四)

2018-06-25
阅读 2 分钟
1.8k
本节主要讲解Posix常用函数和进程池的概念,也会涉及到守护进程的知识。本节难度较低。 Posix常用函数 posix_kill 向指定pid进程发送信号。成功时返回 TRUE , 或者在失败时返回 FALSE 。 {代码...} $sig=0,可以检测进程是否存在,不会发送信号。 示例: {代码...} 注:通过 kill -l 可以看到Linux下所有的信号常量。 p...

PHP 多进程系列笔记(三)

2018-06-22
阅读 6 分钟
2k
本节讲解几个多进程的实例。 多进程实例 Master-Worker结构 下面例子实现了简单的多进程管理: 支持设置最大子进程数 Master-Worker结构:Worker挂掉,Master进程会重新创建一个 {代码...} ~~~防盗版声明:本文系原创文章,发布于公众号飞鸿影的博客(fhyblog)及博客园,转载需作者同意。~~~ 多进程Server 下面我们...

PHP多进程系列笔记(二)

2018-06-19
阅读 5 分钟
3.1k
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程(zombie)进程。任何进程在退出前(使用exit退出) 都会变成僵尸进程(用于保存进程的状态等信息),然后由init进程接管。如果不及时回收僵尸进程,那么它在系统中就会占用一个进程表项,如果这种僵尸进程过多,最后系统就没有可以用的进程表项,...

PHP多进程系列笔记(一)

2018-06-18
阅读 5 分钟
3.6k
PCNTL在PHP中进程控制支持默认是关闭的。您需要使用 --enable-pcntl 配置选项重新编译PHP的 CGI或CLI版本以打开进程控制支持。

使用XHProf分析PHP性能瓶颈(二)

2018-06-18
阅读 3 分钟
3k
上一篇文章里,我们介绍了如何基于xhprof扩展来分析PHP性能,并记录到日志里,最后使用xhprof扩展自带的UI在web里展示出来。本篇文章将讲述2个知识点:

使用XHProf分析PHP性能瓶颈(一)

2018-06-18
阅读 5 分钟
6k
安装xhprof扩展 {代码...} 配置php.ini {代码...} 注:xhprof已经很久没有更新过了,截至目前还不支持php7,php7可以使用 [链接]。 配置xhprof环境 需要把xhprof压缩包里的两个目录复制到指定目录(假设定义到 /work/xhprof/): {代码...} 然后在项目框架的入口文件添加: {代码...} 代码解析: $xhprof_data中记录了程序...

curl_multi实现并发

2018-04-24
阅读 4 分钟
3.1k
普通请求 curl_normal.php {代码...} use time:0.830 s curl_multi并发 curl_multi.php {代码...} use time:0.259 s curl_multi并发优化:curl_multi_select 在上个示例里当$active > 0时,执行curl_multi_exec($mh,$active)而整个批处理句柄没有全部执行完毕时,系统会不停地执行curl_multi_exec()函数。这样可能会轻...

swoole_event_add实现异步

2018-04-22
阅读 8 分钟
2.9k
swoole提供了swoole_event_add函数,可以实现异步。此函数可以用在Server或Client模式下。 swoole_event_add属于AsyncIO,必须运行在CLI 模式。 异步tcp客户端 stream_socket_client实现tcp同步客户端 示例: {代码...} 上述代码是同步执行的。如何变成异步呢? stream_socket_client实现tcp异步客户端 由于fread读取响...

swoole_process实现多进程

2018-04-22
阅读 5 分钟
4.1k
简介 swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。 首先,确保安装的swoole版本大于1.7.2: {代码...} 实例说明 本例里待消费的是三个shell命令,会分别创建一个子进程来消费。消费的时候故意sleep了1秒,以便直观看到效果。 process_t1.php {代码...} 命令行里运行: {代码...} 大家会觉得很...

Yii 多应用多模块

2018-03-29
阅读 2 分钟
3.1k
本文以YII 2.0.7为例。 概述 首先看看多应用和多模块的特点: 多应用的特点: 独立配置文件 独立域名 多模块的特点: 统一配置文件 统一域名 那么,实际该怎么决定使用多应用还是多模块呢? 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用 多应用的配置完全不一样,用多应用比较方便,配置文件使用不...

Swoole笔记(五)

2017-08-20
阅读 5 分钟
4.2k
设置是否后台运行。默认是false。设置daemonize => 1时,程序将转入后台作为守护进程运行。长时间运行的服务器端程序必须启用此项。

Swoole笔记(四)

2017-08-19
阅读 2 分钟
3.2k
Process Process是swoole内置的进程管理模块,用来替代PHP的pcntl扩展。 swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据。 配合swoole_event模块,创建的PHP子进程可以异步的事件驱动模式。 创建子进程 函数原型: {代码...} $function,子进...

PHP容器--Pimple运行流程浅析

2017-07-02
阅读 7 分钟
8.6k
需要具备的知识点 闭包 闭包和匿名函数在PHP5.3.0中引入的。 闭包是指:创建时封装周围状态的函数。即使闭包所处的环境不存在了,闭包中封装的状态依然存在。 理论上,闭包和匿名函数是不同的概念。但是PHP将其视作相同概念。实际上,闭包和匿名函数是伪装成函数的对象。他们是Closure类的实例。 闭包和字符串、整数一样...

Swoole笔记(三)

2017-06-04
阅读 4 分钟
4.5k
WebSocket 使用Swoole可以很简单的搭建异步非阻塞多进程的WebSocket服务器。 WebSocket服务器 {代码...} shell里直接运行php swoole_ws_server.php启动即可。如果设置了后台运行,可以使用下列命令强杀进程: {代码...} 或者重新启动worker进程: {代码...} 输出: {代码...} 注意: onMessage回调函数为必选,当服务器...

Swoole笔记(二)

2017-06-03
阅读 4 分钟
3.7k
本文示例代码详见:[链接]。 重新打开日志 在1.8.11及之后版本支持重新打开日志:向Server主进程发送SIGRTMIN信号。假设主进程id是3427,那么我们可以: {代码...} 注:SIGRTMIN信号的id是34。通过kill -l查看。 那么如何利用这个特征实现每天自动写入新的日志文件里面呢? 假设日志文件是/log/swoole.log,我们可以在每...

Swoole笔记(一)

2017-06-02
阅读 7 分钟
5k
Swoole是一个PHP扩展,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

密码学之DES/AES算法

2017-05-25
阅读 14 分钟
10.4k
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。