请问下如何把 Artisan 命令日志以网页的方式显示呢?

    public function handle()
    {
        for ($i=0;$i<20;$i++)
        {
            $this->info("任务执行{{$i}}次");
        }
    }

正常显示是这样

如何让程序执行 日志 以网页的方式显示呢 ?例如
我使用call只能返回程序码,

Route::get('/', function (){
 retrun Artisan::call('api:api');
});

有没有办法让网页显示这个运行日志呢?因为写个采集任务,通过访问一个网页 就能一面执行任务 另外还能看到进展!谢谢了

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

        header('X-Accel-Buffering: no');
        if (ob_get_level() == 0) ob_start();
        for ($i = 0; $i<30; $i++){
            echo "<br> Line to show.";
            echo str_pad('',4096)."\n";
            echo date('Y-m-d H:i:s')."\n";
            ob_flush();
            flush();
            sleep(1);
        }

        echo "Done.";
        ob_end_flush();

试试

4年前 评论
李小明 (楼主) 4年前
讨论数量: 2

        header('X-Accel-Buffering: no');
        if (ob_get_level() == 0) ob_start();
        for ($i = 0; $i<30; $i++){
            echo "<br> Line to show.";
            echo str_pad('',4096)."\n";
            echo date('Y-m-d H:i:s')."\n";
            ob_flush();
            flush();
            sleep(1);
        }

        echo "Done.";
        ob_end_flush();

试试

4年前 评论
李小明 (楼主) 4年前

只是提供下思路 是否是实时查看输出?不是实时,如下即可获取执行输出

Artisan::call('api:api');
return str_replace(PHP_EOL, '<br/><br/>', Artisan::output());

如果是实时,那最好做成异步,可以把输出写到文件,异步实时读取文件打印输出

4年前 评论
李小明 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!