先说结果:fork 了 swoole 的源码,修复之后打了个 v1.10.7 的版本。 发现问题由于各种原因项目在使用 swoole 的 v1.x 远古版本跑 TCP 服务,基础环境如下。 CentOS 6.9 PHP 5.5.38 然后遇到了程序偶发性超时情况严重。怀疑是版本bug,首先将 swo

docker 实现应用的容器化consul 集群实现服务的注册、发现traefik 处理外部流量的负载均衡与路由 启动 consul 集群与 docker通过 vagrant 起三台虚拟机实现基本的 consul 集群环境(为了节约资源把 docker 也运行在这上面了)。consul 的 vagr

Intro在家中除了带娃、看书也无事可做。把节前值班遇到的问题总结下。 除夕那天我们公司依然正常上班,很多同事都已经提前回家了,在的人也不多,中午吃完饭没什么事就都走了。突然领导发来贺电以为什么好事,居然线上出问题了。前端同事反馈后端无响应,这个反馈也是没谁了,问了下具体调用的后端url,某个同事的

Intro最近在做 Golang 与 PHP 的 RPC 实现。因 PHP 业务端已上线稳定,Golang 方面则需要完全兼容。其中使用了 json 序列化,发现区别还是很大的,见下面代码。 123$ php -aphp > echo json_encode("<test我爱中国>

O’Reilly 是有名的动物书出版公司,当然他们也不仅仅出电子书还有很多别的业务。O’Reilly 在线学习平台上有他们所有出版过的图书都是原版的,但是仅提供在线阅读,虽然也有 App,但是想在 kindle 上看提高阅读体验。 于是抽时间练习练习 Golang 写了个程序,生成 mobi 格式的

本文参考使用Docker打造自己的云平台编写 本文基于 Docker Swarm Mode 实现容器化,虽然目前 k8s 更火一些,但实在是太重了,以后再折腾。使用 traefik 来实现反向代理、负载均衡,traefik 还自带了服务发现、后端断路器、健康检查等,相当于是自带服务发现的 nginx

今天来看看经常使用的数组排序函数如 sort, rsort, asort, arsort, ksort, krsort 。话不多说直接找 sort 函数吧。 在 php7.3 源码中搜索 PHP_FUNCTION(sort) 可以搜到如下 其中 .h 文件是C语言的头文件,直接打开 .c 文件。so

之前用Beyond Compare对比文件,功能非常强大。但是试用期到了就用不了了,而且授权非常的贵,很多功能一般也用不到。 一般文件对比直接用系统自带的diff命令就可以了。但是,如果临时复制粘贴不同版本文件对比,又不想为了对比而创建文件,JetBrains家IDE对比功能就派上用场了。 Mac下

背景说明目前公司采用微服务架构,主要开发语言为PHP,通过Swoole开启TCP服务供业务端调用。通过公司内部编写的PHP扩展封装客户端调用逻辑。 需求暂定使用Go语言开发新的业务,并提供TCP服务。其中老的PHP项目要通过原有的客户端扩展实现无修改调用。 解决方案通过阅读客户端扩展源码了解调用逻辑

背景说明来说说当PHP出现E_ERROR级别致命的运行时错误的问题定位方法。例如像Fatal error: Allowed memory size of内存溢出这种。当出现这种错误时会导致程序直接退出,PHP的error log中会记录一条错误日志说明报错的具体文件和代码行数,其它的任何信息都没有了