我的页面需要3-5分钟才能加载,我怎么可能减少它?

时间:2017-10-22 17:43:43

标签: php html laravel runtime blade

我目前正在处理这个项目,主页需要将近5分钟才能加载。我一直试图减少运行时间,但我仍然是编程的新手,而且我对pthreads不太熟悉,但我被告知pthreads不会使用它。有人可以帮我弄清楚如何更快地运行此代码并阻止Chrome杀死处理器吗?

我也知道我的PHP代码有点乱,计划稍后清理它,但PHP代码的一小部分在整个页面的第0,270,420,560行等。

感谢您的时间。

这是代码的一小部分,但您可以在下面链接的pastebin中找到整个代码:

<?php $k = 0; ?>

<tr>
    @foreach($mondays as $monday)
    <?php $shift_worker_id = DB::table('schedule')->where('id', $monday->id)->value('shift_worker_id') ?>
    <?php $zone_id = DB::table('schedule')->where('id', $monday->id)->value('zone_id') ?>
    <?php $zone = DB::table('zone')->where('id', $zone_id)->value('name') ?>
    <?php $worker_id = DB::table('shift_worker')->where('id', $shift_worker_id)->value('worker_id') ?>
    <?php $shift_id = DB::table('shift_worker')->where('id', $shift_worker_id)->value('shift_id') ?>
    <?php $time = DB::table('shift')->where('id', $shift_id)->value('time') ?>
    <?php $type = DB::table('shift')->where('id', $shift_id)->value('type') ?>
    <?php $name = DB::table('worker')->where('id', $worker_id)->value('name') ?>
    @if($type == "Graveyard")
        <th style="font-size:11px" colspan="1">{{$name}}</th>
        <th style="font-size:7px" colspan="1">{{$time}}</th>
        <th style="font-size:11px" colspan="1">{{$zone}}</th>
        <th colspan="1"></th>
        <th colspan="1"></th>
        <th colspan="1"></th>
        <?php $k++; ?>
    @endif
    @if($k % 4 == 0)
        </tr>
        <tr>
    @endif
    @endforeach
</tr>

https://pastebin.com/uUGrs1x0

1 个答案:

答案 0 :(得分:0)

这肯定是因为N + 1问题。了解如何使用预先加载。

您正在为循环内的数据库创建大量冗余查询,可能是数千而不是6。

  

Eloquent可以&#34;渴望加载&#34;查询父模型时的关系。急切加载缓解了N + 1查询问题。

https://laravel.com/docs/5.5/eloquent-relationships#eager-loading