Comment résoudre une erreur de dépassement de délai dans Laravel 5
J'ai le jeu suivant:
Dans des voies que j'ai:
Itinéraire::get('articles', 'contrôleur d'articles articlescontroller@index');
La méthode de l'indice dans le contrôleur est tout simplement:
public function index()
{
$articles = Article::all();
return View('articles.index', compact('articles'));
}
et dans la vue:
@extends('../app')
@section('content')
<h1>Articles</h1>
<p>
@foreach($articles as $article)
<article>
<h2><a href="{{action('ArticlesController@show', [$article->id])}}">{{$article->title}}</a></h2>
<p>{{ $article->body }}</p>
</article>
@endforeach
</p>
@stop
J'ai tenté de remplacer l':
$articles = Article::all();
avec
$article = Article::latest()->get();
que j'ai fait de montrer les articles les plus récents en premier.
J'ai obtenu l'erreur:
FatalErrorException in Str.php line 322:
Maximum execution time of 30 seconds exceeded
et la pile d'appel est:
in Str.php line 322
at FatalErrorException->__construct() in HandleExceptions.php line 131
at HandleExceptions->fatalExceptionFromError() in HandleExceptions.php line 116
at HandleExceptions->handleShutdown() in HandleExceptions.php line 0
at Str::snake() in helpers.php line 561
at snake_case() in ControllerInspector.php line 105
at ControllerInspector->getVerb() in ControllerInspector.php line 78
at ControllerInspector->getMethodData() in ControllerInspector.php line 39
at ControllerInspector->getRoutable() in Router.php line 251
at Router->controller() in Router.php line 226
at Router->controllers() in Facade.php line 210
at Facade::__callStatic() in routes.php line 21
at Route::controllers() in routes.php line 21
in RouteServiceProvider.php line 40
... etc
J'ai restauré la méthode de contrôleur de ce que c'était, mais l'erreur persiste.
Pouvez-vous s'il vous plaît dites-moi comment je peux résoudre ce problème?
qu'est-ce que
Ce qui se passe lorsque vous essayez
il s'est avéré que mon installation était défectueuse, xamp avec laravel doit avoir l'extension xdebug désactivé pour une raison quelconque
id
ici? Un index du tableau de l'article?Ce qui se passe lorsque vous essayez
$article = Article::orderBy('created_at', 'desc')->get();
au lieu de $article = Article::latest()->get();
ou ce champ d'horodatage-vous?il s'est avéré que mon installation était défectueuse, xamp avec laravel doit avoir l'extension xdebug désactivé pour une raison quelconque
OriginalL'auteur Geordie Gadgie | 2015-05-15
Vous devez vous connecter pour publier un commentaire.
La Maximum execution time of 30 seconds exceeded erreur n'est pas liée à Laravel, mais plutôt votre configuration de PHP.
Ici est de savoir comment vous pouvez y remédier. Le paramètre que vous aurez besoin de changement est
max_execution_time
.Vous pouvez modifier la
max_execution_time
à300
secondes commemax_execution_time = 300
Vous pouvez trouver le chemin de votre fichier de configuration de PHP dans la sortie de la
phpinfo
fonction dans leLoaded Configuration File
section.Route::get('/', function() {die('here')});
affiche " ici " chaîne au bout de 5 secondes. PHP7 + Apache. Windows 7 et Ubuntu 14.04 avec le même comportement.La mise à jour de max_execution_time est pas une bonne solution. essayez d'optimiser la requête.
au lieu de mettre à jour le fichier de configuration utilisation
ini_set('max_execution_time', 300);
dans des pages.Le deuxième argument de la fonction ini_set() doit être une chaîne de caractères au lieu d'un entier.
ini_set('max_execution_time', '300');
php.net/manual/en/function.ini-set.phplors de la mise à jour de
max_execution_time
à 300, l'erreur devient maintenant ->> > le délai d'exécution Maximal de 300 secondes dépasséOriginalL'auteur Noman Ur Rehman
c'est un pur PHP réglage.
L'alternative est d'augmenter le temps d'exécution limiter uniquement pour des scripts php, par l'insertion sur le dessus de ce fichier php, le suivant:
Namespace declaration statement has to be the very first statement or after any declare call in the script
Ooh, j'ai juste placé une ligne après la ligne namespace ...
OriginalL'auteur GrigoreasP
Dans Laravel:
Ajouter set_time_limit(0) de la ligne sur le dessus de la requête.
Il vous aide dans différentes grandes interrogations, mais vous avez besoin pour améliorer requête optimiser.
OriginalL'auteur Umar Tariq
Parfois vous avez juste besoin d'optimiser votre code ou de la requête, en se fixant max_execution_time n'est pas une solution.
Un code ne doit pas être exécuté plus de 30 ans.
vous pouvez exécuter votre lourd code en arrière-plan
Alireza Aboutalebi encore, parfois, vous n'avez pas le choix. J'ai été jeté dans l'héritage des systèmes où j'ai besoin d'avoir un script exécuté pendant plus de 30 secondes. Il arrive parfois, si vous ne pouvez pas agir au-dessus d'une situation, que parfois vous n'avez pas le choix.
Droit
Si votre code est fortement tributaire de la 3e partie de l'API et ensuite de faire beaucoup de traitement vous n'ont parfois pas d'autre choix que de 30 secondes sera simplement pas le couper! Bien sûr, l'optimisation de l'aide et bien sûr, nous pouvons essayer de séparer les tâches, mais il n'est tout simplement pas toujours possible lorsque vous venez dans un projet comme un entrepreneur et vous avez de très serrés. "Ce besoin de réécriture," je dis, "Pas le temps", telle est la réponse! 🙂
OriginalL'auteur Alireza Aboutalebi
Si vous utilisez PHP7, je vous suggère de changer la valeur par défaut dans le public.htaccess
OriginalL'auteur Kwaye Kant
essayer
où
$time
est en secondes, 0 pour un rien de temps. assurez-vous de faire 60 de retour après votre fonction finirOriginalL'auteur karrar kazuya
Options-MultiViews -Index
OriginalL'auteur Carlos Ramírez
Vous devez simplement appuyer sur CTRL + F5. Il travaillera par la suite.
OriginalL'auteur Sandro Cagara