alpha 的博客

何晓东 的博客 | alpha blog

优化Nginx及PHP-fpm的几种方式

优化Nginx及PHP-fpm的几种方式

Nginx 和 PHP 的关系: Nginx 优化 1. TCP 与 UNIX 套接字 UNIX 域套接字提供的性能略高于 TCP 套接字在回送接口上的性能(较少的数据复制,较少的上下文切换)。如果每个服务器需要支持超过 1000 个连接,请使用 TCP 套接字 - 它们可以更好地扩展。 upstream backend { server unix:/var/run/fastcgi...

程序在Redis list异常崩溃时的处理方案

程序在Redis list异常崩溃时的处理方案

题目是:用 Redis list 做消息队列,在取出消息的时候 Redis 宕机,程序上的业务逻辑没执行,怎样处理?先不去考虑 Redis 的异常处理及恢复,一般主从哨兵机制很难崩溃,暂时考虑程序端如何处理这种 方案:直接使用 Redis 官方的 RPOPLPUSH / BRPOPLPUSH source destination 命令,在读取消息的同时,将读取到的消息内容放到...

项目开发的完整流程

项目开发的完整流程

一个标准的项目开发的流程,实际应用中会缺少一些过程和步骤,根据团队情况分配每部分的比重就可以的,当作笔记。 最后恰饭 阿里云全系列产品/短信包特惠购买 中小企业上云最佳选择 阿里云内部优惠券

理解多线程概念及Master-Worker模式

理解多线程概念及Master-Worker模式

  Master-Worker模式是常用的并行设计模式。核心思想是,系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理子任务。任务处理过程中,Master还负责监督任务进展和Worker的健康状态;Master将接收Client提交的任务,并将任务的进展汇总反馈给Client。有时我们希望即使在线程函数完成时也保持工作线程保持活动状态,以便我...

PHP 及 Swoole 读取大文本文件的几种方式

PHP 及 Swoole 读取大文本文件的几种方式

这种问题主要出现在面试题里,现实版没见过,如果有的话,可能是导入 excel 数据的时候用到,一次导入 100m+ 大小的一个 excel 文件,php 配置的 memory_limit 只有10m,如果操作 一般题目为,机器内存为2g,然后有一个 10g 的大文件,请问如何利用 php 读取,基于此需求,我导出的 sql 文件为4m ,然后几次复制粘贴,就 222m 了,然后将 ...

进程 线程概念及对应管理方式

进程 线程概念及对应管理方式

主要是来自维基百科的基础概念,当作笔记 进程的定义: 进程是正在运行的程序的实例。 进程需要一些资源才能完成工作,如CPU使用时间、存储器、文件以及I/O设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。 进程包含下列内容/数据: 1.那个程序的可执行机器代码的一个在存储器的映像。 2.分配到的存储器(通常是虚拟的一个存储器区域)。存储器的内容包括可执行代码...

Swoole结合Vuejs实现动态图表变化

Swoole结合Vuejs实现动态图表变化

大概需求是展示类似股票行情折线图的一个页面,借助 vuejs 的动态渲染和 swoole 长链接的特性,不刷新页面 + 不 ajax 轮询去请求数据,差不多符合新技术了,用户端主要用到了 echarts 和 vuejs   逻辑就是打开页面的时候,自行读取以往的数据,同时链接到 swoole 服务,swoole 中 brpop 负责监听 redis 的数据更新队列,有新数据的时候,...

Swoole平滑重启

Swoole平滑重启

借助 swoole 的特性实现的热重启 很多时候,业务代码修改了一点,而swoole正在处理一些逻辑,直接强行结束 swoole 进程,然后重启可能造成不可预知的问题和脏数据, swoole 自身提供了热重启方法,不需要结束进程进行重启,但也有一些局限性: Reload 操作只能重新载入 Worker 进程启动后加载的 PHP 文件,建议使用get_included_file...

借助Swoole定时过期未支付订单

借助Swoole定时过期未支付订单

借助 swoole 定时器和 redis 的 zset 来实现的定时检查并过期未支付订单   起源于一个需求:将30分钟内未支付的订单过期处理成已失效状态。   最常规简单的解决方案:在服务器上,跑一个定时任务,去数据表中查询数据,查到未支付的订单,update 一下这些数据的状态, 这些数据也可以存在在 redis 中,大致操作都是这样的。数据量少,服务器没有很多压力的时候,这...

PHP,Swoole Task,Redis list消息推送进阶版

PHP,Swoole Task,Redis list消息推送进阶版

2019.03.15 修正,请参见 新文章 测试swoole版本为 4.2.13,旧版本 swoole 可能不兼容 应用场景:论坛系统中,给用户推送自己文章的点赞,评论等信息,电商系统中推送购物车商品优惠信息,物流信息等 起源于设想的两个针对用户消息推送的方案 方案1: 用户登录之后,通过 Websocket 链接 Swoole 服务,然后 Swoole ...