基于 Swoole 构建高性能 Laravel 应用系列 —— 通过 Swoole\Table 实现 Swoole 多进程数据共享

第三方存储媒介 前面我们介绍了基于 Swoole 的 Process 及 Process\Pool 模块在 PHP 中实现多进程管理,但是多进程模式下进程间是相互隔离的,无法共享数据和变量,即便是通过 global 定义的全局或超全局变量,也只是在所属进程中有效,如果要在 Swoole 实现的多进程间共享数据,需要借助第三方存储媒介实现: 数据库:MySQL、MongoDB 缓存:Re...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Process\Pool 通过进程池实现数据库和 Redis 的持久连接

Swoole 进程池的简单实现 从 2.1.2 版本开始,Swoole 开始支持进程池功能,该功能基于 Server 的 Manager 模块实现,可用于管理多个工作进程。相比 Process 实现多进程,Process\Pool 更加简单,封装层次更高,开发者无需编写过多代码即可实现进程管理功能。 下面我们来看一个简单的异步进程池实现示例,通过监听 WorkerStart 事件启动 R...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Process 模块在 PHP 中实现多进程(二):进程间通信

在上篇教程中,学院君给大家介绍了通过 Swoole 提供的 Process 模块可以在 PHP 中实现多进程编程,并且实现了一个简单的多进程 TCP 服务器,但是在该示例中,主进程和子进程之间并没有数据交互,如果主进程需要得到子进程的反馈,或者子进程需要接收来自主进程的数据,那么就需要进程间通信了。 好在 Swoole 的 Process 模块可以很好的支持进程间通信,在基于 Proce...

基于 Swoole 构建高性能 Laravel 应用系列 —— 通过 Process 模块在 PHP 中实现多进程(一):简单的多进程 TCP 服务器实现

Process vs PCNTL 我们知道,通过 PHP 自带的扩展 PCNTL 可以实现基于 Unix 的多进程管理(不能用于 Web 服务器环境),比如 Laravel 自带的队列系列解决方案 Horizon 就会用到这个扩展,但是 PCNTL 有很多坑,比如: 没有提供进程间通信的功能; 不支持重定向标准输入和输出; 只提供了 fork 这样原始的接口,容易导致使用错误。 因此...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 在 Laravel 中实现异步事件监听及处理

这一篇教程我们直接以 hhxsv5/laravel-s 扩展包为例,演示如何在 Laravel 项目中基于 Swoole 实现事件监听。 系统自带事件 首先我们来看一些扩展包自带的系统事件,这些系统事件又可以进一步划分为 Laravel 应用级别的系统事件以及 Swoole 底层 Worker 进程级别的系统事件。 注:在基于 Swoole HTTP 服务器的系统中,Worker 进程...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 在 Laravel 中实现异步任务队列

Swoole 异步任务 实现原理 我们知道,PHP 本身的设计是同步阻塞的,不支持多线程和异步 IO,所以当我们执行一些耗时的操作,比如发送广播,或者邮件,如果直接在当前进程中操作,会导致服务器响应变慢,因此要借助一些第三方服务来处理以实现异步功能,比如队列,而 Swoole 作为 PHP 异步网络通信引擎,自然也对异步任务处理提供了支持,其底层的实现原理和常见的异步队列类似:将耗时任务...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 定时器实现毫秒级任务调度

Swoole 定时器简介 Swoole 提供了异步高精度定时器功能,该功能类似 JavaScript 的 setInterval/setTimeout,粒度为毫秒级,底层基于 epoll_wait(异步)和 setitimer(同步)实现,数据结构使用最小堆。定时器的添加和删除,全部为内存操作,无 IO 消耗,因此性能是非常高的。 需要注意的是,Swoole 实现的定时器与 PHP 自带...

基于 Swoole 构建高性能 Laravel 应用系列 —— 在 Laravel 中集成 Swoole 实现 WebSocket 服务器

在上篇教程中,我们基于 Swoole 实现了简单的 WebSocket 服务器,然后在客户端通过 JavaScript 实现了 WebSocket 客户端,并演示了 WebSocket 的握手和通信过程,今天,学院君将基于 LaravelS 扩展包把 Swoole 集成到 Laravel 项目来实现 WebSocket 服务器,以便于客户端进行 WebSocket 通信从而实现广播功能。...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 实现简单的 WebSocket 服务器及客户端

WebSocket 概述 这篇教程取自社群分享程序员内功修炼系列网络协议篇,其中对 WebSocket 协议的由来、实现原理和通信演示有详细介绍,这里我们仅取中的简单实现篇来介绍,因为在那里也是基于 Swoole 实现 WebSocket 服务器的。 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 HTTP 协议来实现握手,然后通过请求报文中的 U...

在 Laravel 项目中集成 Swagger 扩展包为 Laravel API 生成接口文档并对接口进行测试

除了上篇介绍的 API 文档生成器扩展包之外,我们还可以基于著名的 Swagger 在 Laravel 项目中为 API 接口生成文档。 Swagger 是一个开源的、用于简化 API 开发的工具集,这些工具集涵盖了 API 开发的整个生命周期,从设计到文档、从测试到部署。 Swagger vs OpenAPI 在介绍基于 Swagger 工具集生成 API 文档之前,我们有必要先了解下...