自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

A码农先森的专栏

A码农先森的专栏

  • 博客(20)
  • 资源 (11)
  • 收藏
  • 关注

原创 Swoole 实践篇之结合 WebSocket 实现心跳检测机制

这里实现的心跳检测机制是一个基础版的,心跳包的主要作用是用于检测用户端是否存活,有助于我们及时判断用户端是否存在断线的问题。在我之前开发过的项目中,有一个基于物联网在线直播抓娃娃的项目,其中就有需要实时监控设备在线状态的需求,该需求就是使用心跳包来实现的。实际上心跳检测技术,应用更广泛的是实时通信、或设备管理的场景偏多。

2024-04-22 22:33:01 253

原创 Swoole 实践篇之结合 WebRTC 实现音视频实时通信方案

这次实现音视频实时通信的方案是基于 WebRTC 技术的,它是一种点对点的通信技术,通过浏览器之间建立对等连接,实现音频和视频流数据的传输。

2024-04-16 22:27:32 604

原创 08 | Swoole 源码分析之 Timer 定时器模块

Swoole 中实现了毫秒精度的定时器,而原生的 PHP 中只支持到秒级别。数据结构使用最小堆支持添加大量定时器,全部为内存操作且十分高效。定时器在实际的业务场景中应用也是非常广泛,常用于延时或定时执行的任务中,例如:订单超时未付款自动取消等场景。

2024-04-07 22:51:07 733

原创 07 | Swoole 源码分析之 Channel 通道模块

Channel通道需要在协程的环境中进行使用,通道是纯内存操作,没有 IO 消耗,非常高效。底层使用函数实现了协程的自动切换和调度,如果通道处理超时则会自动调用函数。Channel通道是跨协程直接通信的一大利器,在实际的场景中使用起来十分的便利、高效。

2024-04-04 09:21:11 883

原创 06 | Swoole 源码分析之 Coroutine 协程模块

协程又称轻量级线程,协程是用户级线程;不需要操作系统参与,创建切换成本低。Swoole 中的协程是无法利用多核 CPU 的,如果想利用多核 CPU 则需要依赖 Swoole 的多进程模型。Swoole 中协程的是利用的 Event 事件循环进行调度的,将遇到 IO 操作的 Socket 统一加入到事件循环中。本次的源码分析旨在了解整个协程在 Swoole 中的运行逻辑,打开我们的思路,便于我们更好的体会到协程所带来的高性能价值。

2024-04-02 22:36:16 1270

原创 05 | Swoole 源码分析之 WebSocket 模块

在 Swoole 中 WebSocket 服务是继承于 Http 服务。在实际的使用过程中是通过 Http 服务来握手升级成 WebSocket 服务。WebSocket 协议的出现解决了通过传统轮询方式来通信的效率问题。同时也为 PHP 在双向通信解决方式上提供了新的解决方案。

2024-04-01 22:39:26 736

原创 04 | Swoole 源码分析之 epoll 多路复用模块

epoll 在内部使用了红黑树的数据结构,红黑树是一个高效的数据结构。epoll 是解决 C10K 问题的利器,不仅是在 Swoole 中被应用,在很多的高性能服务中也有应用,例如:Nginx 服务等。Swoole 被称为高性能通信框架的关键原因,就是采用了 epoll 多路复用技术。

2024-03-31 11:04:16 756

原创 03 | Swoole 源码分析之 Http Server 模块

想要了解到的全貌,其实只要把那张整体的实现图看懂就足以了。但是,如果想要有足够的深度,那么就还需要深入Swoole的源代码中,就着源码自行分析一遍。同时,也希望这一次的分析,能够给大家带来对Swoole更多的一些了解。并不要求要深刻的掌握,因为,很多的事情都不可能一蹴而就。从自己的实力出发,勿忘初心。

2024-03-29 11:31:42 970

原创 02 | Swoole 源码分析之 TCP Server 模块

从 Swoole 官网的这段短小精悍的代码,就可以看出 Server 服务的关键要点。再通过对类、构造方法、回调函数的层层剖析,我们逐渐的了解了底层的实现原理。TCP Server 模式是基础模块,我们经常使用的 HTTP 模块就是基于此模块进行扩展的,所以我们需要有一定的了解。对我们来说掌握了原理性的内容,在回过头去看用户级的代码,往往会更轻松,所以我们需要有耐心的琢磨。

2024-03-27 22:53:43 769

原创 01 | 深入理解 Swoole 的底层加载原理

首先,理解 Swoole 扩展的加载原理,最重要的是要搞懂最开始提到的 PHP 扩展加载全流程。我就是在这个全流程的分析上,花了大量的时间。经常分析到一半,发现逻辑不对,然后就反复的分析其中的关联关系。其次,对于之前只写 PHP 业务代码,没有接触过 PHP 源代码的人来说,简直就是看天书。因此,如果有志于学习源码的朋友,一定到有足够的耐心,反复研读、琢磨。最后,Swoole 作为 PHP 在异步通信框架领域的一个重要的扩展,还是值得好好学习的。

2024-03-26 23:26:01 742

原创 10 | Swoole与Go系列教程之Redis连接池的应用

Redis 连接池的出现是为了解决频繁地创建和销毁 Redis 连接带来的性能开销和资源浪费。在传统的 Redis 连接方式中,每次与 Redis 服务进行通信时都需要创建新的连接,完成操作后再关闭连接,这种方式会导致频繁地进行 TCP 连接的建立和释放,增加了网络开销和系统负载。为了优化性能并提高 Redis 的吞吐量,引入了连接池机制。连接池通过预先创建一定数量的连接,并将这些连接保存在一个连接池中。

2024-03-24 23:40:21 1028

原创 09 | Swoole与Go系列教程之MySQL连接池的应用

MySQL 连接池的出现是为了解决数据库连接频繁创建和销毁的性能问题。在传统的数据库访问方式中,每次操作数据库时都会创建一个新的数据库连接,频繁创建和销毁连接会导致连接无法被有效复用。连接池可以减少了连接的创建和销毁开销,降低了数据库操作的延迟。继而减轻了数据库服务器的负担,提升了数据库的性能和并发能力。MySQL 连接池极大地提升了数据库访问性能和可伸缩性,使得数据库访问更加高效、可靠和稳定。MySQL 连接池的出现是为了解决数据库连接频繁创建和销毁的性能问题。

2024-03-23 22:52:51 803

原创 08 | Swoole与Go系列教程之Channel通道的应用

通道(Channel)是一种在多线程或多协程编程中用于并发通信和同步的重要概念。通道最早由计算机科学家 Tony Hoare 在通信顺序进程(CSP)理论中提出。CSP 强调通过通信来实现并发任务之间的协作,而不是共享内存。通道的出现使得多个任务可以通过发送和接收消息进行通信,而无需显式地使用锁和共享内存。CPS 理论强调通过通信来实现并发任务之间的协作,而不是共享内存。通道(Channel)是一种并发编程模型,通常使用的数据结构是先进先出队列来实现。

2024-03-22 23:47:26 611

原创 07 | Swoole与Go系列教程之多进程编程的应用

多进程能够充分利用计算机系统的资源,提高系统的吞吐量、响应能力和容错性。多进程允许多个任务在同一时间内并发地执行。通过将任务划分为多个进程,可以实现并行处理。每个进程都有自己独立的内存空间和数据结构,进程之间相互隔离。这种隔离确保了进程可以安全地运行,即使其中一个进程出现问题也不会影响其他进程的稳定性。多进程还可以提高系统的容错性。如果一个进程崩溃或出现问题,其他进程仍然可以正常工作。多进程可以使得这些核心得到充分利用,每个进程可以在一个独立的核心上运行,从而实现并行计算,提高系统的整体性能。

2024-03-21 22:38:51 818

原创 06 | Swoole与Go系列教程之百万协程的应用

协程的出现是为了解决传统线程和进程模型在并发编程中的一些问题。随着计算机应用的复杂性增加,对于高效处理异步任务的需求也越来越多。传统的线程和进程模型在处理大量的异步任务时会面临资源消耗和切换开销的问题。在传统的线程或进程模型中,当一个任务发生阻塞时,整个线程或进程都会被阻塞,导致其他任务无法继续执行。这种阻塞会浪费计算资源,影响整体性能。在某些场景下,并不需要使用重量级的线程或进程来进行并发处理。轻量级的协程可以在单个线程中实现多个任务的并发执行,减少了资源的开销。

2024-03-20 22:50:39 731

原创 05 | Swoole与Go系列教程之Timer定时器的应用

定时器在程序中的作用是为了实现定时触发事件或周期性执行任务的需求。在很多应用场景中,需要按照特定的时间点或者时间间隔来执行任务,比如定时任务调度、定时日志记录、定时数据清理等。定时器可以在后台线程或者异步任务中执行,减少对主线程的阻塞,提高程序的并发能力。在 Linux 系统中最常用的是 Crontab 定时调度的工具,可以很便捷的控制任务的执行触发时间。定时器底层原理都是基于硬件提供的时钟中断机制来实现的。Swoole 中的定时器回调是利用了事件循环机制来实现的。

2024-03-19 22:54:57 679

原创 04 | Swoole与Go系列教程之UDP服务的应用

UDP协议相对于TCP协议而言,设计更为简单,不需要进行连接建立和断开的握手过程,也没有复杂的连接状态管理和流量控制机制。UDP协议的出现是为了满足特定类型的网络应用需求,如实时性要求高、可靠性要求低、数据传输速度要求快的场景。通过简化传输层功能和减少传输开销,UDP协议为这些应用提供了一种高效、快速的数据传输选择。UDP 协议是一种高效、快速传输的协议。该协议不用进行握手,即可直接发送数据。在使用方式上 Swoole 和 Go 其实差别并不大。

2024-03-18 23:05:16 793

原创 03 | Swoole与Go系列教程之TCP服务的应用

TCP(传输控制协议)的出现是为了解决计算机网络中的数据可靠传输和连接管理的问题。在早期的计算机网络中,特别是在分组交换和互联网的发展初期,网络是不可靠的,存在丢包、错误和延迟等问题。为了保证数据能够可靠地传输,需要一种协议来提供可靠的传输机制。而早期的协议如UDP(用户数据报协议)是无连接的、不可靠的,无法满足应用程序对连接管理的需求。TCP协议提供一种标准化、可靠的数据传输服务,促进了互联网的发展和应用的普及。TCP 协议提供了可靠的传输方式,让数据的传输有了保障。

2024-03-17 16:40:38 793

原创 02 | Swoole与Go系列教程之WebSocket服务的应用

在 WebSocket 协议出现之前,Web 应用为了能过获取到实时的数据都是通过不断轮询服务端的接口。轮询的效率、延时很低,并且很耗费资源。在2008年 Google 的一位工程师 Ian Hickson 发明并起草了 Websocket 协议的相关规范,后来经过讨论和改进,由 WHATWG 组织负责制定了 WebSocket 的标准。最终,WebSocket 协议在2011年被正式发布为 RFC 6455 标准,同时得到了广泛应用和支持。

2024-03-16 16:17:28 907

原创 01 | Swoole与Go系列教程之HTTP服务的应用

PHP 曾是Web开发领域佼佼者,随着业务壮大,异步和高并发方面不足显现。Swoole 曾经尝试填补空白,但局限性也比较的明显。Go 语言的崛起,简洁语法和并发优势吸引大厂使用,吸引了大多数程序员的转型。疫情、战争、大环境的恶化等因素加剧了互联网行业内卷,PHP 程序员陷入了困境,因此转型 Go 语言是不二的选择。我从 PHP 转型Go,深知转型之难。因此致力于帮助其他 PHP 程序员转型,分享经验。困境时需抱团取暖,才能走过黎明前的黑暗。

2024-03-16 16:16:08 1709

php-7.2.0-Win32-VC15-x86.zip

PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。这是php7.2版本。

2017-12-26

Visual C++ 2015运行库

Visual C++ 2015运行库包括C运行时库(CRT),标准C + +和MFC,C + +,和OpenMP。开发的Visual C++应用程序使用动态链接到Visual Studio 2015和Visual C + +库。

2017-12-26

thinkphp3.2.2备份数据库插件

thinkphp3.2.2备份数据库插件

2017-02-16

php开发短信接口平台的工具类

php开发的短信接口平台的工具类。

2016-10-24

Laravel之简单的学生信息管理平台

laravel框架写的简易版的学生信息管理平台,贯穿了laravel的控制器、视图、模板、模型、中间件、路由规则的使用。页面是使用BootStrap前端框架搭建 使用laravel实现了增删改查的功能。

2016-10-20

Laravel框架之简单的学生信息管理平台

laravel框架写的简易版的学生信息管理平台,贯穿了laravel的控制器、视图、模板、模型、中间件、路由规则的使用。页面是使用BootStrap前端框架搭建 使用laravel实现了增删改查的功能。

2016-10-20

PHP实现人脸识别技术

PHP实现人脸识别技术

2016-09-13

Web在线文件管理器

PHP实现Web在线文件管理器,适合初学者上手连基础的项目。

2016-09-12

使用php将Excel转sql工具

使用php将Excel转sql工具,使用php脚本语言,在浏览器端实现将Excel中的数据,转换为sql语句。

2016-09-12

php接口开发代码

php接口开发代码

2016-04-29

编译原理实验指导书

通过设计、编写和调试将确定的有穷自动机的状态数变为最少的C程序,使得学生掌握化简为有穷自动机的过程中的相关概念和方法。DFA的表现形式可以为表格或图形。

2015-12-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除