web-dev-qa-db-fra.com

Augmenter le temps d'exécution maximum pour php

J'ai ajouté la fonction set_time_limit(0); pour augmenter le temps d'exécution, mais son exécution ne dure que 2-3 minutes maximum.

error_reporting(E_ALL);
error_reporting(1);
set_time_limit(0);

Je veux rechercher des liens sur un site qui prend une longue chaux.

Toute aide serait grandement appréciée. 

Merci beaucoup.

58
Bajrang

Fichier PHP (par exemple, my_lengthy_script.php)

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

fichier .htaccess

<IfModule mod_php5.c>
php_value max_execution_time 300
</IfModule>

Plus d'options de configuration

<IfModule mod_php5.c>
php_value post_max_size 5M
php_value upload_max_filesize 5M
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300
php_value session.gc_maxlifetime 1200
</IfModule>

Si wordpress, définissez ceci dans le fichier config.php,

define('WP_MEMORY_LIMIT', '128M');

Si drupal, sites/default/settings.php

ini_set('memory_limit', '128M');

Si vous utilisez d'autres frameworks,

ini_set('memory_limit', '128M');

Vous pouvez augmenter la mémoire de gigaoctet.

ini_set('memory_limit', '3G'); // 3 Gigabytes

259200 signifie: -

( 259200/(60x60 minutes) ) / 24 hours ===> 3 Days

Plus de détails sur mon blog

203
Sumith Harshan

Ajoutez ces lignes de code dans votre fichier htaccess. J'espère que cela résoudra votre problème.

<IfModule mod_php5.c>
php_value max_execution_time 259200
</IfModule>
10
Salman Aslam

Eh bien, puisque vous êtes sur un serveur partagé, vous ne pouvez rien y faire. Ils définissent généralement le temps d'exécution maximal afin que vous ne puissiez pas le remplacer. Je vous suggère de les contacter.

3
Mob

eh bien, il y a deux façons de changer max_execution_time.
1. Vous pouvez directement le définir dans le fichier php.ini.
2. Deuxièmement, vous pouvez ajouter la ligne suivante dans votre code. 

ini_set('max_execution_time', '100')
1
Nishu Tayal

Il y a probablement une limite dans votre serveur Web. Certains navigateurs/mandataires implémenteront également un délai d'attente. Invoquer des processus longs via une requête HTTP est tout simplement idiot. La bonne façon de résoudre le problème (en supposant que vous ne pouvez pas accélérer le traitement) consiste à utiliser la requête HTTP pour déclencher le traitement en dehors du groupe de sessions du serveur Web, puis à interroger le statut via HTTP jusqu'à ce que vous obteniez un ensemble de résultats.

0
symcbean

Utilisez mod_php7.c au lieu de mod_php5.c pour PHP 7

Exemple

<IfModule mod_php7.c>
   php_value max_execution_time 500
</IfModule>
0
PrestaShark

C'est une vieille question, mais si quelqu'un le trouve aujourd'hui, il y a des chances que php soit exécuté via php-fpm et mod_fastcgi. Dans ce cas, rien ici ne aidera à prolonger le temps d'exécution car Apache mettra fin à la connexion à un processus qui ne produira rien pendant 30 secondes. Le seul moyen de l'étendre consiste à modifier l'option -idle-timeout dans Apache (module/site/vhost) config.

FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /run/php/php7.0-fpm.sock -idle-timeout 900 -pass-header Authorization

Plus de détails - Augmente le délai d’inactivité de PHP-FPM

0
seven