使用从控制器传递的数据渲染任何视图时,Laravel会超时5次

时间:2015-05-20 01:40:17

标签: php laravel laravel-5

在我的应用程序中,我始终能够像使用view('myView', compact('data'));一样将数据传递到任何视图。截至今天,我尝试以这种方式渲染的任何视图都会超时。我在Maximum execution time of 120 seconds exceeded收到错误Whoops!。我尝试增加php.inihttpd.conf超时时间,但没有雪茄。这真的很奇怪,对我来说没有意义,因为我总是能够立即渲染我的视图,即使从数据库中检索15k +记录并像往常一样将它们传递给视图。

我的控制器:     

use App\Product;
use Illuminate\Support\Facades\Session;

class HomeController extends Controller {


    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        //the controller is normally like this
        //$products = Product::paginate(16);
        //return view('home', compact('products'));

        //I'm testing with these 2 lines below but no cigar.
        $product = Product::wherePid(303)->first();
        return view('test', compact('product'));
    }
}

我创建的测试视图:

@extends('app')

@section('content')

    {{ $product->name }}

@stop

我的申请视图:

@extends('app')

<pre>{{ var_dump(Session::all())}}</pre>

@section('content')
  <div class="row">
    @foreach($products as $product)
      <div class="col-xs-6 col-sm-3 col-lg-3 col-md-3">
        <?php
          if($product->img[7] == 'm' || $product->img[7] == 'M') echo "<div class='continenteIcon'></div>";
          else echo "<div class='jumboIcon'></div>";
        ?>
        <div class="thumbnail">
          <a href="products/{{$product->pid}}"><img src="{{$product->img}}" title="
            <?php
              if($product->dispname != '') echo $product->dispname;
              else echo $product->name;
            ?> ">
          </a>
          <div class="caption">
            <h4>
              <a style="text-decoration:none;" class="wordwrap" title="
                <?php
                  if($product->dispname != '')
                    echo $product->dispname;
                  else echo $product->name;
                ?>" href="products/{{$product->pid}}">
                <?php
                  if($product->dispname != '')
                    echo $product->dispname;
                  else echo $product->name;?>
              </a>
            </h4>
            <p>{{$product->brand}}</p>
            <span class="pull-right price">€{{$product->price}}</span>
            <br/>
            <span class="pull-right ppk">€{{round($product->pricekilo, 2)}} Kg, L ou Und</span>
          </div>
          <div class="ratings">
            <p class="pull-right">&nbsp;{{-- # review--}}</p>
            <p>
              <form method="post" action="add/{{$product->pid}}">
                <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
                <button title="Adicionar ao carrinho" type="submit" class="btn btn-success">
                 <i class="fa fa-shopping-cart"></i>
                </button>
              </form>
              <form method="post" action="products/related/{{$product->pid}}">
                <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />
                <button title="Ver artigos semelhantes" style="position:relative; bottom:35px;" type="submit" class="btn btn-info pull-right">
                  <i class="fa fa-search"></i>
                 </button>
               </form>
             </p>
           </div>
         </div>
       </div>
       @endforeach
      </div>
      <div class="row">
        {!! $products->render() !!}
      </div>
      <div class="row">
        <div class="pull-right">
            * Preço por unidade, Litro ou Kilograma
        </div>
@stop


@section('scripts')

@stop

问题不仅发生在此视图中,而且每次我尝试从数据库中获取某些内容并将其传递给视图进行渲染。我不停地超时,无论我做什么,我似乎无法解决它。

我很无知为什么会这样。看起来好像是从头开始。我不知道是什么导致了这个问题。

任何帮助?

P.S。:我正在使用Wamp。

编辑:我忘记添加一些可能很重要的内容:

一切都在Wamp中启动并运行。如果我dd()出查询结果并且不呈现视图

$products = Product::paginate(16);
dd($products);
//return view('home', compact('products'));

这很快,就像以前一样。快速地说,我需要不到1秒的时间来检索我需要的一切。但是如果我用

渲染视图
return view('home', compact('products'));

一切都停滞不前,我得到500(我用Fiddler2检查,页面停止加载后,请求状态为500)

3 个答案:

答案 0 :(得分:0)

好像你可能要求太多的记录可能会占用太多的RAM。我会使用chunk命令来帮助您管理您要求的金额。

例如:

 User::chunk(200, function($users)
{
    foreach ($users as $user)
    {
        //
    }
});

答案 1 :(得分:0)

首先检查日志。 接下来尝试dd($product)

接下来,如果您尝试使用最后2行渲染视图(获取第一条记录),请从模板中删除分页。 将模板清理到最低限度,例如

@extends('app')

@section('content')
  <div class="row">
    @foreach($products as $product)

       @endforeach
      </div>
@stop

答案 2 :(得分:0)

我刚把它整理出来。问题出现在app.blade.php中的以下代码块中。

$size = Session::get('size');
...
<input type="text" value="'.Session::get($item).'">         
...

我正在搞乱来自现有会话的数据,一切正常。我以为我做得对。我不是。不是偶然的:)

假设是所有搞砸的母亲。

围绕整个街区 if(Session::has('size') ,一切都很快,并且像往常一样顺利运行。

感谢@Pyton指出我正确的方向并感谢大家的贡献。