基于 Laravel + Swoole + Vue 搭建实时在线聊天室(一):环境准备篇

项目概述 今天开始,学院君将带领大家基于 Swoole 搞个「大项目」 —— 开发在线聊天室,当然还是在 Laravel 框架中,前端 UI 还是基于 Vue 组件实现,本项目主要涉及以下技术: 基于 Laradock 本地开发环境进行演示和测试 后端基于 Laravel 5.8 + LaravelS 扩展包引入对 Swoole 的支持 基于 Swoole 提供的 WebSocket ...

通过 Livewire 在 Laravel 项目中实现基于 PHP 的全栈开发(三):数据绑定及底层实现

上篇教程我们介绍了 Livewire 组件创建和渲染的底层实现逻辑,这篇教程我们来演示下数据绑定的使用示例。和 Vue 组件类似,数据绑定的作用主要是在不刷新页面的情况下实现视图中某些区块数据的动态更新,而且这个绑定是双向的:后端数据修改后可以即时渲染到视图模板,在视图模板中修改数据后也可以将其更新到后端绑定变量。 双向绑定 通过上篇教程的分析我们已经知道,Livewire 组件的数据绑...

通过 Livewire 在 Laravel 项目中实现基于 PHP 的全栈开发(二):组件创建和渲染的底层实现

前言 昨天在发布完 Livewire 入门教程后,分享到 v2ex 和朋友圈引来各种评论,大多数人持有的态度都是「这玩意没啥用」,我想这部分人大多是已经非常熟悉Laravel + Vue/React 进行前后端开发了,而目前无论就性能和先天基因来说,Livewire 确实都是不如原生 Vue/React 组件的,就像 Weex、React Native 一直致力于通过 JavaScrip...

通过 Livewire 在 Laravel 项目中实现基于 PHP 的全栈开发(一):快速上手篇

Livewire 简介 现如今的 JavaScript 有些疯狂,各种框架和工具层出不穷,有种「山中方一日,世上一千年」的感觉,有的时候,即使是很简单的功能,比如弹出模态框或者对前端交互做一些微调,我们也不得不引入大量的代码(比如安装一个 NPM 包),这无疑提高了应用的复杂性,也让项目代码库显得臃肿不堪,而且有的时候真的有点杀鸡焉用牛刀。 其实我们大可不必如此。 因为有了 Livewi...

基于 Laravel + Swoole + Vue 组件实现支持高并发的实时弹幕功能(下)

我们接着上篇教程来完成弹幕服务端以及客户端与服务端交互的开发,首先来实现服务端 WebSocket 服务器的编码。 WebSocket 服务器 我们参照之前的功能介绍教程《在 Laravel 中集成 Swoole 实现 WebSocket 服务器》实现这个用于弹幕功能的 WebSocket 服务器。 注:如果你还没有在 Laravel 项目中安装配置 LaravelS 扩展包,参考这篇...

基于 Laravel + Swoole + Vue 组件实现支持高并发的实时弹幕功能(上)

前面我们已经介绍完了 Swoole 的所有功能特性以及集成到 Laravel 框架的注意事项,接下来学院君带大家来做一些实践小项目练练手,在实践篇里,我们将完成两个项目,一个是简单的弹幕功能,一个是在线聊天室,首先我们来实现弹幕功能。 弹幕服务后端实现 随着哔哩哔哩之类的弹幕视频网站和在线直播视频的兴起,弹幕功能越来越常见,所谓弹幕其实就是视频界面上满天飞评论,就像下面这种: 这样一来...

基于 Swoole 构建高性能 Laravel 应用系列 —— Swoole 驱动的 Laravel 应用优化原理及注意事项

上篇教程学院君给大家简单介绍了 Swoole 底层组件和运行原理,今天我们结合 Laravel 框架来介绍基于 Swoole 驱动的 Laravel 应用开发与传统的基于 PHP-FPM 的 Laravel 应用开发有哪些区别,在开发过程中要注意些什么。 Swoole vs. PHP-FPM 我们先来看看传统的基于 PHP-FPM 的 Laravel 应用启动和请求处理流程: 如上图所...

基于 Swoole 构建高性能 Laravel 应用系列 —— Swoole 的底层架构及运行原理

前面我们已经陆续介绍了 Swoole 提供的各种功能,回过头来再看 Swoole 官网的那句 Slogan:「面向生产环境的 PHP 异步网络通信引擎」,想必你会有更加深切的体会,有了 Swoole 扩展,我们可以在 PHP 中轻松实现多进程、异步编程和并发编程,从而开发出高性能、可扩展的 Web 应用。 接下来,我们来探讨下 Swoole 的底层架构和运行原理,以便你可以在开发过程中更...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 SMProxy 通过协程调度实现 MySQL 连接池

简介 我们之前都是基于 LaravelS 扩展在 Laravel 框架中使用 Swoole,但是 LaravelS 不支持数据库连接池,只能实现数据库长连接,而对于 PHP 应用来说,数据库连接池在提升性能方面确有显著功效,我们可以基于 Swoole 提供的异步任务或者协程来自己实现数据库连接池,不过还有一个现成的扩展可以使用,那就是SMProxy,SMProxy 是一个基于 Swool...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 实现协程篇(三):在 Laravel 框架中使用协程

前两篇教程我们陆续介绍了 Swoole 协程的实现原理,以及如何在 PHP 中基于 Swoole 协程实现并发编程,今天,学院君将介绍如何在 Laravel 框架中使用 Swoole 协程,还是基于 LaravelS 扩展包为例来进行演示。 通过上篇教程的示例代码,你应该已经知道,多个 Swoole 协程的执行顺序时是无序的,这通常取决于每个 Swoole 协程任务的时间复杂度,因此,对...