Comment augmenter le délai d'expiration des transactions? Je souhaite télécharger des vidéos, mais des vidéos de grande taille ne sont pas téléchargées?
Il jette une erreur The process *** exceeded the timeout of 60 seconds.
Comment augmenter le délai d'expiration des transactions? Je souhaite télécharger des vidéos, mais des vidéos de grande taille ne sont pas téléchargées?
Il jette une erreur The process *** exceeded the timeout of 60 seconds.
Réponses:
Vous devez modifier certains paramètres de votre php.ini:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds
L'emplacement de votre PHP.ini dépend de votre environnement, plus d'informations: http://php.net/manual/en/ini.list.php
Vous devriez également pouvoir le faire pendant l'exécution en utilisant
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
ou dans votre vhost-config
php_admin_value max_execution_time 10000
Avoir une limite de temps d'exécution globale FAIBLE est surtout une bonne idée pour des raisons de performances sur des applications peu fiables. Vous voudrez peut-être autoriser uniquement ces scripts à s'exécuter plus longtemps que nécessaire.
ps: N'oubliez pas post_max_size et upload_max_filesize (comme la première réponse l'a déjà dit)
Pour compléter la réponse de Hannes.
Vous devez modifier certains paramètres de votre php.ini:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Si quelqu'un veut mettre en illimité (je ne sais pas pourquoi mais si vous le souhaitez), vous pouvez régler l'heure sur 0:
Vous devez modifier certains paramètres de votre php.ini:
upload_max_filesize = 0
max_execution_time = 0
Et si vous ne savez pas où est votre php.ini. Vous pouvez faire un fichier "name.php" dans votre serveur et mettre:
<?php phpinfo(); ?>
Et sur votre site Web, vous pouvez voir la configuration de votre php.ini et il est marqué où il se trouve.
Si vous ne pouvez pas accéder à votre php.ini, vous avez deux autres options.
Vous pouvez définir cette ligne directement dans votre fichier "name.php" mais je ne trouve pas de upload_max_filesize pour cette option:
set_time_limit(0);
Ou dans ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
si ce que vous devez faire n'est spécifique que pour 1 ou 2 pages, je suggère d'utiliser set_time_limit pour ne pas affecter l'ensemble de l'application.
set_time_limit(some_values);
mais bien sûr, ces 2 valeurs (post_max_size & upload_max_filesize) sont sujettes à enquête.
vous pouvez soit le définir via la fonction ini_set
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
ou directement dans le fichier php.ini comme la réponse ci-dessus par Hannes, ou même définissez-le dans .htaccess comme ci-dessous
php_value upload_max_filesize 2M
php_value post_max_size 20M
En plus des réponses ci-dessus, vous pouvez utiliser la set_time_limit()fonction:
http://php.net/manual/en/function.set-time-limit.php
passer 0comme argument rendra votre script exécuté sans limite de temps.
Si vous utilisez le serveur Microsoft IIS , en plus du php.ini paramètres mentionnés par d'autres, vous devrez peut-être augmenter les paramètres de délai d'exécution pour l'application PHP FastCGI dans le gestionnaire de serveur IIS:
Étape 1) Ouvrez le Gestionnaire de serveur IIS (généralement sous Gestionnaire de serveur dans le menu Démarrer, puis Gestionnaire d' outils / Internet Information Services (IIS) ).
Étape 2) Cliquez sur la connexion principale (non spécifique à un domaine particulier).
Étape 3) Dans la section IIS , recherchez les paramètres FastCGI (illustrés ci-dessous).
Étape 4) Là, cliquez avec le bouton droit sur l'application PHP et sélectionnez Modifier ... .
Étape 5) Vérifiez les délais (indiqués ci-dessous).
Dans mon cas, les délais d'expiration par défaut étaient de 70 et 90 secondes; le premier provoquait une erreur de serveur interne de 500 sur les scripts PHP qui prenait plus de 70 secondes.
Vous avez eu une faute de frappe: ini_set ('max_input_time', '200M') - l'ensemble de valeurs doit être un entier, comme ini_set ('max_input_time', '200')
Je sais que vous posez spécifiquement des questions sur le délai d'expiration de PHP, mais ce que personne d'autre ne semble avoir mentionné, c'est qu'il peut également y avoir un délai d'expiration sur le serveur Web et que cela peut ressembler beaucoup au délai d'expiration de PHP.
Donc, si vous avez essayé:
Et vous avez vérifié avec la fonction phpinfo () que max_execution_time a bien été augmenté, alors vous voudrez peut-être essayer d'ajouter ceci à .htaccess, ce qui garantira qu'Apache lui-même n'expire pas:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Plus d'informations ici: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
Vérifiez d'abord le php.inichemin du fichier par phpinfo(); puis changé les PHP.INIparamètres:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
redémarré Apache
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Remarque : vous pouvez également utiliser la commande pour rechercher php.inisous Linux
locate `php.ini`
Si vous ne pouvez pas éditer php.ini (sur votre serveur par exemple), vous pouvez essayer de changer les paramètres php.ini à partir de votre code php. Essayer:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Si cela ne fonctionne pas, essayez également de définir 'set_time_limit' de la même manière, au-delà de cela, je dirais que votre seule option est de contacter votre hôte. Ces paramètres ne peuvent pas être modifiés en mode sans échec.
Testez si vous êtes en mode sans échec - sinon - définissez la limite de temps (valeur locale) sur ce que vous voulez:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Vous ne pouvez pas définir la limite de temps de cette façon si le mode sans échec est activé.
facultatif: si vous définissez la configuration sur php.ini mais que vous ne pouvez toujours pas télécharger
-c'est une fonction php pour vérifier le code d'erreur
$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
echo $error_type[$status_code];
exit;
}
Vous pouvez également définir une durée d'exécution maximale dans votre .htaccessfichier:
php_value max_execution_time 180
Pour vraiment augmenter la limite de temps, je préfère d'abord obtenir la valeur actuelle. set_time_limitn'augmente pas toujours le délai. Si la valeur actuelle (par exemple de php.iniou précédemment définie) est supérieure à la valeur utilisée dans l'appel en cours de set_time_limit, elle diminuera la limite de temps!
Alors, qu'est-ce qu'une petite aide comme celle-ci?
/**
* @param int $seconds Time in seconds
* @return bool
*/
function increase_time_limit(int $seconds): bool
{
return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));
}
// somewhere else in your code
increase_time_limit(180);
Voir aussi: Obtenir max_execution_time dans un script PHP