首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于 Redis 实现 Laravel 广播功能():引入 Laravel Echo 接收广播消息

通过 Sail 编排 Laravel Echo Server 项目根目录 docker 目录下(我已经通过 sail artisan sail:publish 发布了 Sail 容器编排文件,所有会有这个目录...docker-compose.yml services 中新增一个 laravel-echo-server 服务编排配置: services: ......令牌代码以便被 Laravel Echo 读取: 浏览器访问 http://redis.test...,因为 Laravel 默认是基于消息队列处理广播消息): sail artisan queue:work --queue=broadcast 这个时候,查看 laravel-echo-server...浏览器页面开发者工具 Console ,也可以看到客户端接已经收到这个事件消息并打印出用户信息来了: 至此,从 Laravel 服务端到 Laravel Echo Server 到 Laravel

3.7K10

基于 RoadRunner 驱动 Octane 构建高性能 Laravel 应用

/vendor/bin/sail shell # Sail shell 环境执行 ....确保项目根目录下 rr 具备可执行权限,重新构建 Sail 容器: chmod +x ./rr ./vendor/bin/sail build 最后重新启动 Sail 容器服务: ....为了方便本地开发,Laravel Octane 引入了 --watch 标识告知 Octane 项目文件发生变更自动重启服务器,只需要在启动 Octane 时带上这个标识即可: php artisan...['request']); }); // 或者,还可以直接在服务方法传入具体请求字段值 $service->method($request->input('name')); 对于控制器而言,由于其构造函数也是服务注册初始化期间完成...项目根目录下更新下载 rr 过程自动生成 .rr.yaml 文件如下: server: command: "php .

1.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

基于 Redis 发布订阅 + Socket.io 实现事件消息广播功能

所谓广播,其实就是基于 Websocket 协议实现客户端与服务端双全工通信,不同于传统 HTTP 协议那种被动应答式通信,服务端只有客户端发起请求才能返回响应数据, Websocket 协议,...接收到事件消息数据,接着闭包回调通过 io.emit 按照 Socket.io 约定格式进行处理将其广播给 Socket.io 客户端。...你可以通过如下命令启动这个 Websocket 服务器: sail node websocket.js 学院君这里使用了 Laravel Sail 作为本地开发环境,对应其他环境,相应环境通过...还是以 Sail 为例,我们需要将应用容器 3000 端口暴露出来,才可以被客户端访问, .env 中新增一个 WEBSOCKET_PORT 配置: WEBSOCKET_PORT=3000 然后...然后运行如下 Artisan 命令基于 Redis 发布消息: sail artisan redis:publish Websocket 服务端日志输出,可以看到 Redis 订阅客户端已经接收到服务端发布消息

4.4K20

基于 Redis 布隆过滤器实现海量数据去重及其 PHP 爬虫系统应用

/docker/data/sailredis:/data' networks: - sail 注:将 docker-compose.yml 之前 redis 镜像替换成 redislabs...每个布隆过滤器对应到 Redis 底层数据结构就是一个大型位数组和一系列偏哈希函数(所谓偏就是能够把元素哈希值算得比较均匀): 向布隆过滤器添加键值对时,会使用这一系列哈希函数分别对键名进行哈希运算...接下来,我们 Laravel 中演示如何实现这个功能。...artisan migrate 在数据库创建这张数据表,然后创建 CrawlSource 模型类对应模型工厂定义填充字段: sail artisan make:factory CrawlSourceFactory...你可以队列任务处理完成,比对 crawl_soources 唯一 URL 总数和已爬取 URL 总数来看看误差是多少,我这里这个两个数值分别是 9417/9327,误差率 1%,和默认值相符,

1.9K11

基于 Redis 消息队列实现邮件通知异步发送

配置邮件驱动 为了方便本地开发调试,使用 Maillog 作为邮件驱动,它可以本地拦截应用发送所有邮件并提供一个 Web 界面浏览器预览这些邮件信息,Laravel Sail 开发环境默认提供了这个容器服务...创建邮件通知类 接下来,我们创建一个通知类: sail artisan make:notification UserRegistered 该通知类用于在用户注册成功发送邮件通知。...; } } 我们 via 方法定义了通知通道为 mail,表示会通过上述邮件驱动发送这个通知,通邮件通知具体实现定义 toMail 方法。...SendEmailVerificationNotification 是由 Laravel 底层提供,用于发送邮箱验证通知,该通知只有启用邮箱验证功能时候才会发送,目前我们并没有做配置,所以这个通知不会发送...演示用户注册邮件通知 到这里,我们就已经为用户注册成功发送邮件通知功能做好了所有准备工作,终端启动队列处理器进程监听并处理 notifications 队列任务: sail artisan queue

2.9K20

基于 Redis 消息队列实现文件上传异步存储

不过 Laravel ,我们可以基于消息队列完成文件存储异步处理:编写一个处理文件上传任务类,当有文件上传时,将该文件存储操作通过任务类推送到消息队列,最后通过队列处理器进程异步处理存储和其他后续操作...posts 表添加 image_id 字段与 images 表建立关联关系(逆向一对多): sail artisan make:migration alter_posts_add_image_id...运行 sail artisan migrate 让上述数据库变更生效。 定义模型类和关联关系 模型类 Image 定义其与 Post 一对多关联: <?...通过在线 JSON 工具解析就可以看到完整包含任务类和载荷数据 JSON 结构数据,要处理这个消息队列任务,需要启动队列处理器进程,通过单独控制台应用进程执行: sail artisan queue... posts 表也可以看到相应 image_id 字段已更新。 清空文章详情页缓存,就可以看到图片和浏览数被正常渲染了: ?

3.4K20

基于 Redis 实现 Laravel 广播功能(下):私有频道和存在频道发布和接收消息

定义存在频道广播事件类 我们以统计当前微信群在线用户数为例进行演示,每当有新用户进入时,更新在线用户数并广播这个事件消息,为此我们需要创建一个标识用户进入微信群广播事件类: php artisan make...客户端接收存在频道消息 Laravel Echo 客户端,我们可以通过 Echo.join 加入某个私有频道返回 PresenceChannel 实例,然后在其基础上通过 listen 接收 Websocket...服务端广播消息,以及处理加入、离开、在线事件,还是 websocket.blade.php 视图文件中新增相应广播消息接收代码: ......artisan redis:publish sail artisan queue:work --queue=broadcast /broadcast 页面可以看到已经成功接收到广播消息: 但是这条广播消息推送给自己显得有点奇怪...,可以分发事件返回实例上调用 toOthers 方法告知系统将这个事件消息广播给排除当前用户所有其他在线用户。

3K30

为什么 Laravel 这么优秀?

Make Model # 我们第一步是根据 Laravel 提供 Artisan 命令生成对应 Model;实际开发我们通常会提供额外参数以便生成模型时候一起生成额外模版文件,如数据库迁移文件...,Laravel 会直接帮我们验证并返回错误信息,如下面的 teacher_id 在数据库并不存在。...强大辅助函数和丰富 API,在下面的代码我们甚至可以做到一行代码就完成课程创建及依赖关系更新。...这在日常开发十分有用,因为你不需要在本地配置各种复杂服务。...Cache 对象,注册阶段不应该向容器获取值,因为此时服务可能还没有 Ready;启动阶段一般用来控制如何启动你服务,如你可以在这个阶段 Connect to Server、Start engin

14310

通过 Laravel Sail 构建基于 Docker 本地开发环境

Laravel 官方最近发布了 Laravel Sail —— 一个轻量级、基于 Docker Laravel 本地集成开发环境,今天学院君就以 Mac 系统为例,给大家演示下如何基于 Laravel...项目初始化成功,即可进入 redis-demo 项目,然后通过 Sail 提供 up 命令启动 Sail,首次启动会拉取 MySQL、Redis 镜像: ?...Sail 本质上是基于 Docker Compose 编排 Docker 容器服务构建起来 Laravel 集成开发环境(包含 PHP、MySQL、Redis),只不过针对 Laravel 项目做了上层封装和兼容...所有容器服务启动成功,就可以浏览器通过默认 laravel.test 域名来访问这个新建项目了: ?...当然,你也可以通过修改项目根目录下 docker-compose.yml 文件默认应用服务名称来调整域名: services: redis.test: ...

2.9K20

laravel-s Docker 中使用(包含队列使用)

--name=demo-service -w /var/dev demo-image /bin/sh 修改代码自动更新 ## 进入容器内部 docker exec -it demo-service /bin...-f queue.Dockerfile -t laravel-worker 运行队列容器 docker run -d --name=laravel-worker-service laravel-worker...-it laravel-worker-service /bin/sh 重启队列: php /var/www/artisan queue:restart 重启队列逻辑 队列开始执行时, 队列获取当前缓存时间戳...-v映射本地目录 更新代码时候是更新宿主机代码, 然后映射到容器, 容器再按照上面的命令重启队列, 即可加载最新代码 更新代码方法3 构建好新容器镜像进行 停止旧容器队列进程 ## 执行命令查看队列进程无任务输出..., 恢复服务运行 php artisan up Tips 新增加队列任务不需要重启也可以加载(因为PHP可以动态require文件) 注意 记得把config/laravels.php => listen_ip

17610

Laravel之队列「建议收藏」

默认是sync,即同步,直接处理,队列.要将其修改为对应类型,如database,redis等 laravel学院文档地址 使用redis为例: 1,config/queue.php return...你可以使用 Artisan CLI 生成新队列任务: php artisan make:job SendReminderEmail --queued //--queued告诉 Laravel 该任务应该被推送到队列而不是同步运行...$this->attempts() // 返回失败次数 $this->release(50); // 将任务放回到队列,50秒次执行 启动队列监听 基本命令 php artisan queue:listen...2.如果修改了代码,在后台队列是无效,必须重启队列 php artisan queue:restart 这个命令依赖于缓存系统重启进度表,默认情况下,APC CLI 任务无法正常工作,如果你使用...处理失败任务 创建一个 failed_jobs 表迁移 php artisan queue:failed-table 生成表 php artisan migrate 操作完成databases

1.7K10

用Docker搭建Laravel开发环境

rm v5.5.0.tar.gz 上面的命令curl下载完源码包后会解压源码压缩包,解压完成把源码压缩包 v5.8.0.tar.gz删掉,执行完你会看到一个laravel-5.8.0项目目录。...第二步:添加docker-compose.yml 项目中创建 docker-compose.yml文件。...Mysql服务 接下来我们将配置Mysql服务,与上面两个服务有点不一样是,PHP-FPM和Nginx容器,我们配置本地电脑文件可以同步到容器供容器访问,这让我们开发时对文件作更改能够快速容器得到反馈加快我们开发过程...初始化Laravel项目 启动完服务我们可以初始化Laravel项目了,步骤跟官方文档里介绍一样,但是需要在启动app服务容器里执行: docker-compose exec app composer...app是定义docker-compose.yml一个服务,它是一个运行着php-fpm容器 php artisan migrate 是要在容器里执行命令 查看nginx日志方法: docker

4.3K10

如何在Ubuntu 14.04上使用Ansible部署高级PHP应用程序

没有服务同学可以在这里购买,不过我个人更推荐您使用免费腾讯云开发者实验室进行试验,学会安装再购买服务器。) Ansible CVMSSH密钥授权PHP部署CVM上登录。...它应该返回这样东西。...Laravel,这是通过Laravel目录运行migrate命令(即php artisan migrate --force)来完成。...一分钟,它将更新为如下所示: Queue: YES Cron: YES 这意味着队列工作者正在后台正常工作。我们在上一步启动cron作业将作业推送到队列。...作业在运行时更新数据库以显示其正在运行。 我们现在有一个工作示例Laravel应用程序,其中包括正常运行cron作业和队列工作程序。

10.7K60

【教程】使用腾讯云轻量应用服务器搭建Koel音频流服务,简单实现个人音乐服务

我们腾讯云轻量应用服务器重装系统时候,可以选择应用镜像,然后选择 'Docker' ,然后我们就可以使用 'Docker' 部署搭建了我们需要程序啦!...注意:docker-compose.yml 文件中所有 password 您应用高强度密码替换它。2077为暴露端口,如被占用,请自行更改替换,需要在腾讯云轻量应用服务后台防火墙开放相应端口!...初始化Koel 输入以下命令,初始化 Koel docker-compose exec koel php artisan koel:init 出现以下返回 Attempting to install...> php artisan koel:admin:change-password 其中为容器名字,教程为koel_koel_1。...至此,我们已经安装完成 Koel 音频流服务了 浏览器访问您刚刚设置域名即可访问!进入登录即可享用 Koel 音频流服务,上传歌曲然后畅快欣赏音乐啦啦!

2.6K30

Laravel 消息队列优先级和失败任务重试实现

上篇教程发布,有同学反馈消息队列优先级怎么实现,Laravel 本身对此提供了支持,除此之外,Laravel 队列组件还支持批处理、延迟推送、失败任务处理、消息队列中间件、频率限制等很多特性,一篇教程根本介绍不完...底层,Laravel 会根据处理进程启动时指定队列顺序依次读取每个队列任务进行处理,对应源码位于 Worker 类 getNextJob 方法: protected function getNextJob...应用中集成过第三方服务同学应该对 Webhook 很熟悉,在业务流程某个节点,通过第三方服务接口对应用状态做更新,由于这种网络请求是异步操作,响应时间是未知,需要通过 Webhook 获取第三方服务更新结果...->url, $this->data); } } 在这个任务类,我们通过 queue 属性指定了要推送到队列名称是 service handle 方法,使用了 HTTP 客户端 API...$this->release(10 * $this->attempts()); } 如果没有处理器命令启动时指定 tries 选项,那么这个任务会无休止地重试下去,直到执行成功,你可以通过在任务类定义一个

2.2K20

Ubuntu 16.04Laravel5.4升级到5.6步骤

版本 laravel5.6要求PHP版本为^7.13,而Laravel5.4只需要^5.6版本 之前我安装是7.0PHP所以需要升级 升级PHP 终端运行: dpkg --get-selections...apache2 restart 1.1此处要提醒大家 PHP7.2有一个关于Count问题 PHP7.2这样写 <?...将phpunit改为6.0 删除所有php artisan optimize, 因为5.6已经删除了这个命令 根目录终端运行:composer update 等待一段时间更新 终端输入: php...artisan -V 查看Laravel版本 3、日志修改 5.4和5.6日志是有区别的 所以需要在config下添加一个logging.php配置文件,代码请复制里面 https://github.com.../laravel/laravel/blob/develop/config/logging.php 然后.env下添加LOG_CHANNEL=stack这样日志就不会报错了 总结 以上就是这篇文章全部内容了

78030

Laravel API教程:如何构建和测试RESTful API

您遵循下载说明(并添加到您路径环境变量),使用以下命令安装Laravel: $ composer global require laravel/installer 安装完成,您可以像这样创建(手脚架...,您应该可以启动服务器并测试一切正常工作: $ php artisan serve Laravel development server started: <http://127.0.0.1:8000...204: 内容。当一个动作执行成功,但没有内容返回。 206:部分内容。当您必须返回分页资源列表时很有用。 400: 错误请求。无法通过验证请求标准选项。...: { data: "Resource not found" } 如果您使用Laravel服务其他页面,则必须编辑代码以使用Accept header,否则常规请求404错误也将返回JSON...文件夹注册时返回正确响应。

20.2K20

Laravel 5.0 之目录结构与命名空间

对于 Laravel 框架初学者来说, 问题被分解了. 以前版本 app 目录几乎涵盖了除前端代码之外所有内容, 而现在它聚焦于应用核心逻辑....同时也鼓励对 Service Providers 用户态使用(即 "我们代码里,而不是框架代码里")....毕竟 Controllers, filters, commands 和 service providers 都是对 Laravel 框架扩展, 并且可能你所有类可能要么接收 Laravel注入...如果 xxx 以前版本是放在 routes.php 文件(但它不是一个路由定义), 或者是放在 start.php 文件, 那么现在它应该写到某个 Service Provider 里....比如新建了一个 Laravel 项目之后, 可以马上执行下面的 artisan 命令, 把根命名空间从 "App" 改为 "Confomo": $ php artisan app:name Confomo

1.4K40

【教程】使用腾讯云轻量应用服务器搭建Koel音频流服务,简单实现个人音乐服务

我们腾讯云轻量应用服务器重装系统时候,可以选择应用镜像,然后选择 'Docker' ,然后我们就可以使用 'Docker' 部署搭建了我们需要程序啦!...腾讯轻量部署 Koel - 新建文件并输入配置内容注意:docker-compose.yml 文件中所有 password 您应用高强度密码替换它。...初始化Koel输入以下命令,初始化 Koeldocker-compose exec koel php artisan koel:init 复制出现以下返回Attempting to install or...> php artisan koel:admin:change-password复制其中为容器名字,教程为koel_koel_1。...进入登录即可享用 Koel 音频流服务,上传歌曲然后畅快欣赏音乐啦啦! Ps:需要在腾讯云轻量应用服务后台防火墙开放相应端口!默认需要开放 80 tcp 与 443 tcp哦。

1.5K81

推荐17-Laravel 中使用 JWT 认证 Restful API

教程接下来步骤只 5.5 和 5.6 测试过。可能不适用于 Laravel 5.4 或以下版本。您可以阅读 针对旧版本 Laravel 文档 。...接口需要实现两个方法 getJWTIdentifier 和 getJWTCustomClaims 。使用以下内容更新 app/User.php 。 <?...如果从 attempt 方法返回 false ,则返回一个失败响应。否则,将返回一个成功响应。 logout 方法,验证请求是否包含令牌验证。...更新产品模型并保存到数据库,如果记录成功更新返回一个 200 成功响应,否则返回 500 内部服务器错误响应给客户端。 现在,让我们实现 destroy 方法。...然后我们删除产品并根据删除操作成功状态返回适当响应。 控制器代码现在已经完成, 完整控制器代码 在这。 测试 我们首先来测试身份认证。

10.9K20
领券