数据库迁移很慢,可以加个进度条吗?怎么加呢?
有个数据迁移,要是一直不动,好难受,可以给他加个进度条吗?
我知道可以调用命令行, 但是这样不会显示运行进度
Artisan::call('update:xx');
Artisan::call('db:seed', ['--class=CustomerCountsSeeder'], $output); // 新问题,不能实时显示执行结果
1. 运行环境
1). 当前使用的 Laravel 版本?
8.5.x
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
7.4
2. 问题描述?
数据迁移比较耗时,长时间看不到执行进度,怕挂了也不知道,浪费时间
3. 您期望得到的结果?
xx 迁移开始(原英文)
执行进度,进度条也行,数字也行,只要可以看到在执行就好
xx 迁移结束
4. 您实际得到的结果?
xx 迁移开始(原英文)
xx 迁移结束 (等待 xx 时间后)
执行的命令
php artisan migrate // 这里可以显示进度条吗?迁移的时候没有 output 对象
找到解决方法了
直接上代码
原因也找到了,挺简单的,上代码,直接在代码里面说明吧
继续查看
Symfony\Component\Console\Output\BufferedOutput
至此原因已经明确,那么直接替换
output
对象就行, 打印app()
,也没有找到合适的对象,那就只能自己创建了,也就是开头的这段话最终代码
PS:如果需要考虑代码复用,可以把
$output
单独拎出去,创建trait
类·