30秒的最大执行时间超过了Laravel 4错误


Maximum execution time of 30 seconds exceeded Laravel 4 error

我在 laravel 4 中的某个函数中在我的用户控制器中发送密码请求时遇到问题。它检查数据库中是否存在电子邮件,然后在用户存在时发送电子邮件。然后,该函数在表中创建一个令牌,并在电子邮件中链接的末尾发送该令牌。

该函数的工作原理是在数据库中创建令牌,但它似乎有一个问题,因为我不断收到Maximum execution time错误。我不知道是什么原因造成的,这似乎与重定向有关。有人可以帮我吗?提前感谢!

以下是控制器功能:

public function passwordRequest()
    {
        $data = [
            "requested"=>Input::old("requested")
        ];
        if(Input::server("REQUEST_METHOD") == "POST") {
            $input = Input::all();
            $rules = [
                "email" => "required|exists:users,email"
            ];
            $v = Validator::make($input, $rules);
            if($v->passes()) {
                $credentials = [
                    "email" => Input::get("email"),
                ];
                Password::remind($credentials, function($message, $user) {
                    $message->from("request@test.com");
                });
                $data["requested"] = true;
                return Redirect::route("user/request")->with($data);
            }
            return Redirect::to(URL::route("user/request"))->withInput($data)->withErrors($v);
        }
        return View::make("user/request", $data);
    }

以下是路由.php文件:

Route::group(["before"=>"guest"], function() {
    Route::any("/", [
        "as"=>"user/login",
        "uses"=>"UserController@userLogin"
    ]);
    Route::any("/request", [
        "as"=>"user/request",
        "uses"=>"UserController@passwordRequest"
    ]);
    Route::any("/reset", [
        "as"=>"user/reset",
        "uses"=>"UserController@passwordReset"
    ]);
    Route::any("/register", [
        "as" => "user/register", 
        "uses" => "UserController@userRegister"
    ]);
})
;

如果需要,下面是视图:

@extends("layouts.master")
@section("content")
<h1>Request Password Reset</h1>
{{ Form::open([
    "route"=>"user/request",
    "autocomplete"=>"off"
]) }}
    @if(isset($errors))
        @foreach ($errors->all() as $error)
            <div class="error">
                <li>{{ $error }}</li>
            </div>
        @endforeach
    @endif
    @if(Session::has("requested"))
        <div class="success">
            <li>An email has been sent with your password reset request.</li>
        </div>
        {{ Session::forget('requested') }}
    @endif
    <br />
    {{ Form::label("email", "Email:") }}
    {{ Form::text("email", Input::old("email"), [
        "placeholder"=>"Email Address"
    ]) }}
    {{ Form::submit("Reset") }}
{{ Form::close() }}
<br />
{{ HTML::linkRoute("user/login", "Return to Login") }}
@stop

您的脚本执行了 30 秒以上,并且被终止,与Laravel无关,但与php无关。默认限制为 30 秒,存储在php.ini文件中。要暂时延长时间限制,您可以在当前脚本中使用以下行 if 代码,但也尝试优化您的脚本(如果可能)

set_time_limit(60); //60 seconds = 1 minute

阅读更多关于 php 手册的信息。

你可以做set_time_limit(0);这样脚本就会永远运行—— 但是,不建议这样做,您的 Web 服务器可能会捕获您 带有强制的 HTTP 超时(通常约为 5 分钟)。

您也可以使用

ini_set('max_execution_time', 60);

检查ini_set。

问题实际上出在我使用的wifi上。我断开了与它的连接并连接到另一个,一切正常。我从来没有遇到过wifi不允许本地主机发送电子邮件的问题。感谢所有的帮助!