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.
désolé, je n'ai aucune idée de ce que vous entendez par là :(
Hannes
@Aamir, vous devez avoir l'autorisation de votre hébergeur pour modifier la configuration de votre serveur Web. Souvent, ils ne vous laisseront pas changer des choses comme ça.
hellozimi
puis-je changer upload_max_filesize et max_execution_time dans le fichier htaccess?
Aamir
2
@Col, je ne suis pas d'accord, il veut faire les changements à la volée et non sur l'ensemble de l'application, alors il demande comment il peut le faire. Et même s'il demandait comment il pouvait simplement changer des choses dans le php.ini, cela pourrait être une question de débutant, mais une question légitime tout de même.
Hannes
1
@IulianOnofrei bien, j'ai juste ressenti le besoin de le signaler: D, mais peut-être que si vous ne savez pas ce que c'est, c'est toujours bon de le chercher ... "Ceux qui ne peuvent pas apprendre de l'histoire sont condamnés à la répéter" et tout ça …
Hannes
56
Vous devriez également pouvoir le faire pendant l'exécution en utilisant
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)
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
set_time_limit () n'a rien à voir avec les téléchargements de fichiers
Votre bon sens
1
Ce n'est pas assez précis Col. Shrapnel. Alors que sur les environnements Unix, le temps d'exécution maximal est comparé au temps CPU cumulé utilisé par le thread php, sur les systèmes Windows, le temps absolu est utilisé. Le téléchargement est principalement "inactif" (IO-Wait). Mais comme vous le voyez, les téléchargements peuvent s'arrêter quand cela prend trop de temps.
Christoph Strasen
4
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é:
Augmenter le timeout dans php.ini en ajoutant une ligne: max_execution_time = {nombre de secondes soit 60 pour une minute}
Augmenter le timeout dans votre script lui-même en ajoutant: ini_set ('max_execution_time', '{number of seconds ie 60 for one minute}');
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:
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.
Hannes a eu ceci une minute avant que je ne publie, et souligne correctement que set_time_limit () ne doit pas être défini par ini_set, comme indiqué dans cette réponse, mais en mettant les secondes entre parenthèses. A voté à Hannes.
John
1
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;}
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);
Réponses:
Vous devez modifier certains paramètres de votre php.ini:
L'emplacement de votre PHP.ini dépend de votre environnement, plus d'informations: http://php.net/manual/en/ini.list.php
la source
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)
la source
Pour compléter la réponse de Hannes.
Vous devez modifier certains paramètres de votre php.ini:
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:
Et si vous ne savez pas où est votre php.ini. Vous pouvez faire un fichier "name.php" dans votre serveur et mettre:
Et sur votre site Web, vous pouvez voir la configuration de votre php.ini et il est marqué où il se trouve.
Edit le 9 janvier 2015:
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:
Ou dans ".htaccess"
la source
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.
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
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
la source
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
0
comme argument rendra votre script exécuté sans limite de temps.la source
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.
la source
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')
la source
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:
Plus d'informations ici: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
la source
Vérifiez d'abord le
php.ini
chemin du fichier parphpinfo()
; puis changé lesPHP.INI
paramètres:redémarré Apache
Remarque : vous pouvez également utiliser la commande pour rechercher
php.ini
sous Linuxla source
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:
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.
la source
Testez si vous êtes en mode sans échec - sinon - définissez la limite de temps (valeur locale) sur ce que vous voulez:
* Vous ne pouvez pas définir la limite de temps de cette façon si le mode sans échec est activé.
la source
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
la source
Vous pouvez également définir une durée d'exécution maximale dans votre
.htaccess
fichier:la source
Pour vraiment augmenter la limite de temps, je préfère d'abord obtenir la valeur actuelle.
set_time_limit
n'augmente pas toujours le délai. Si la valeur actuelle (par exemple dephp.ini
ou précédemment définie) est supérieure à la valeur utilisée dans l'appel en cours deset_time_limit
, elle diminuera la limite de temps!Alors, qu'est-ce qu'une petite aide comme celle-ci?
Voir aussi: Obtenir max_execution_time dans un script PHP
la source