首页 » SEO优化 » php异步excel技巧_Swoole进修八Hyperf做一个Excel异步导出做事

php异步excel技巧_Swoole进修八Hyperf做一个Excel异步导出做事

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

Hyperf

Swoole

php异步excel技巧_Swoole进修八Hyperf做一个Excel异步导出做事

这次我们利用hyperf的Crontab能力做一个Excel导出功能。
基于Hyperf2.0版本进行

php异步excel技巧_Swoole进修八Hyperf做一个Excel异步导出做事
(图片来自网络侵删)

场景

Excel导出是我们在日常业务中常用的一种功能,各种数据列表须要在供应查询展示功能的同时,一样平常也须要带有导出功能,一样平常在数据量不大的时候直接下载就可以了,但是如果数据量几万、十几万或者更多的时候,随意马虎导致数量大要求超时、内存溢出等问题导致导出失落败,办理方案呢有很多种,这里我们利用操持任务的异步形式来做。

这里的限定一方面来自数据库查询的压力,大批量数据查询随意马虎超时内存溢出、第二个方面是Excel天生时会吃掉大量的内存,每个行、每个列都要load到内存中,末了写入到文件,可想这是很恐怖的事情。
而常规php-fpm下对内存及程序的运行韶光都是有限定的。

条件准备

安装crontab组件 composer require hyperf/crontab利用表明声明一个操持任务,须要配置属性name任务名称、rule也便是实行韶光、callback也便是业务实行逻辑,关于表明我们之前已经学习过了hyperf表明在crontab的callback中编写业务逻辑就可以了

实行逻辑

在数据列表中点击下载的时候,通过接口创建一个下载任务 export_task操持任务每分钟实行一次,每次通过task状态去获取待处理的任务处理完成之后将天生的文件路径,更新到task中不才载中央就可以下载了操持任务在hyperf中便是一个自定义的进程

干系演示Demo

export_task表

crontab表明声明一个操持任务 每分钟一次

启动做事后 php ./bin/hyperf.php start 操持任务进程就会启动

操持任务

同时我们在web端展示两个列表,一个用户列表,一个导出任务列表。

前端这里利用React结合antDesign库大略完成

前端实行:yarn start 将会启动前端页面

用户列表

点击下载-天生异步任务

去下载中央下载就可以了

干系事变

如果想运行代码的话须要提前准备一下几点:

确认干系表已经创建 php ./bin/hyperf migrate 如果是第一次须要实行 migrate:install 创建migrate表确认composer干系依赖已经安装 实行 composer install确认React干系依赖已经安装 实行 yarn add跨域的办理这里利用hyperf供应的方案

总结

这里只是供应了一种异步的思路,大家可以根据自己的实际业务去构思不同的方案

干系代码:

https://github.com/nobody05/hyperf_study

干系文档:

crontab利用解释:https://hyperf.wiki/2.0/#/zh-cn/crontab

跨域处理:https://hyperf.wiki/2.0/#/zh-cn/middleware/middleware?id=%e8%b7%a8%e5%9f%9f%e4%b8%ad%e9%97%b4%e4%bb%b6

ant文档:https://ant.design/components/table-cn/#components-table-demo-reset-filter

标签:

相关文章

php对象数目技巧_PHP 面向对象

在现实天下里我们所面对的事情都是工具,如打算机、电视机、自行车等。工具的紧张三个特性:工具的行为:可以对 工具施加那些操作,开灯,...

SEO优化 2024-12-12 阅读0 评论0