我目前正在处理这个项目,主页需要将近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>
答案 0 :(得分:0)
这肯定是因为N + 1问题。了解如何使用预先加载。
您正在为循环内的数据库创建大量冗余查询,可能是数千而不是6。
Eloquent可以&#34;渴望加载&#34;查询父模型时的关系。急切加载缓解了N + 1查询问题。
https://laravel.com/docs/5.5/eloquent-relationships#eager-loading