Max_execution_time sur mutualisé

Eléphanteau du PHP | 21 Messages

05 déc. 2010, 06:02

Bonjour à tous !!

Ma question aujourd'hui c'est au sujet du "max_execution_time" sur apache chez ovh en mutualisé...

J'ai un site de petites annonces, ou les internautes peuvent poster quelques images. J'ai fait un formulaire simple avec upload grâce à une classe php jusque là rien de bien compliqué.

Mon problème viens du fait que certain internaute sans scrupules me postent des images de plus de 10 Mo, et là ils obtiennent un joli message "Internal server error" du fait que l'upload de leur fichier est trop long...

Je peu limiter la taille des fichiers uploadés, mais ça n'empêche pas cette erreur car si quelqu'un avec une connexion 56 K (sisi ça existe encore !!) poste une image d'1 Mo c'est le même problème, c'est trop long.

J'ai contacté OVH pour savoir s'il était possible de modifier le "max_execution_time" mais en mutualiser évidemment que non.

Je n'ai pas encore le budget pour un serveur dédié, avez-vous des idées ??

Mammouth du PHP | 1511 Messages

05 déc. 2010, 14:23

Le temps d'upload n'est pas dépendant du max_execution_time du serveur, vu que le fichier fait partie intégrante de la requête HTTP.
Après, concernant l'erreur 500 pour ceux qui mettent des fichiers de 10Mo, c'est peut-être du au fait du max_filesize ?

Eléphanteau du PHP | 21 Messages

05 déc. 2010, 14:49

Non c'est bien le temps d'exécution d'un script, si l'upload est trop long il y a coupure. J'avais déjà eu ce problème sur un autre site, mais vu qu'il était sur un serveur dédié on avait pu résoudre le problème facilement.

ViPHP
ViPHP | 5462 Messages

05 déc. 2010, 18:09

normalement avec un ini_set tu peux le changer

Eléphanteau du PHP | 21 Messages

05 déc. 2010, 18:41

pas sur les mutualisé chez OVH :( j'ai déjà tenté

ViPHP
AB
ViPHP | 5818 Messages

05 déc. 2010, 19:13

Bien que n'y connaissant pas grand chose en administration serveur (je n'utilise que des mutu) j'aurais tendance à rejoindre momox :
ce n'est pas max_execution_time, mais max_input_time qui concerne l'upload.

... et l'erreur sur le téléchargement d'un fichier de 10Mo est plus certainement due à un dépassement du upload_max_filesize ou post_max_size.

Cette classe gère ces deux erreurs. Tu devrais peut-être l'essayer pour voir si le problème ne vient pas de là. Tu peux facilement la mettre en place avec cet exemple

Eléphanteau du PHP | 21 Messages

05 déc. 2010, 19:21

Ok merci je vais faire des essaies :D

ViPHP
ViPHP | 1136 Messages

05 déc. 2010, 19:31

En fait les deux entrent en jeu ,

-> upload_max_filesize non modifiable via le code php , mais uniquement par par le php.ini depuis php4.2.3 ( peut être OVH prend en compte le php.ini par directory ... on ne sait jamais , mais j'ai des doutes )
-> set_time_limit(0) , si l'upload dure plus de 30 seconde ( qui est le time limit par defaut )

Si tu ne peux passer outre , il ne te resta plus qu'à passer sur un dédié , ou un autre prestataire qui te permet de modifier ce genre de paramétres .

Good luck ,
Ch.

ViPHP
ViPHP | 5462 Messages

05 déc. 2010, 19:35

pas sur les mutualisé chez OVH :( j'ai déjà tenté
t'es sur ? moi je suis chez OVH en mutu et ca marche

Eléphanteau du PHP | 21 Messages

05 déc. 2010, 19:39

pas sur les mutualisé chez OVH :( j'ai déjà tenté
t'es sur ? moi je suis chez OVH en mutu et ca marche
Là du coup je ne suis plus sûr, je ferais mes tests demain je vous tiens au jus

Eléphanteau du PHP | 21 Messages

06 déc. 2010, 12:22

Bon rien n'y fait, je vais devoir passer sur un dédié ou utiliser Java :evil:

ViPHP
ViPHP | 5462 Messages

06 déc. 2010, 12:26

Bon rien n'y fait, je vais devoir passer sur un dédié ou utiliser Java :evil:
quelle est l'erreur parce que : ""Internal server error" c'est cour t'a rien d'autre ? quelle est ton niveau d'erreur PHP ? et t'as version ?

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2010, 04:46

En fait les deux entrent en jeu ,

-> upload_max_filesize non modifiable via le code php , mais uniquement par par le php.ini depuis php4.2.3 ( peut être OVH prend en compte le php.ini par directory ... on ne sait jamais , mais j'ai des doutes )
-> set_time_limit(0) , si l'upload dure plus de 30 seconde ( qui est le time limit par defaut )

Si tu ne peux passer outre , il ne te resta plus qu'à passer sur un dédié , ou un autre prestataire qui te permet de modifier ce genre de paramétres .

Good luck ,
Ch.
ça doit dépendre des serveurs, je viens de tester sur un mutualisé :
<?php echo ini_get('max_execution_time') .'<br />';
echo ini_get('max_input_time') .'<br />';
echo ini_get('upload_max_filesize') .'<br />';
echo ini_get('post_max_size') .'<br />';

// max_execution_time = 30
//max_input_time = 60
//upload_max_filesize = 2Mo
// post_max_size  = 8Mo
?>
Et dans la même page je mets ma fonction de téléchargement.

Pour un fichier de 4Mo qui prend environ 50 secondes pour le téléchargement, la fonction renvoie bien le message :
"Le fichier excède la taille maximale de fichier autorisée par le serveur"
donc le "max_execution_time" est ignoré.

D'ailleurs "max_input_time" n'est pas pris en compte non plus puisque pour un fichier de 7.8Mo, la fonction renvoie le même message au bout d'environ 1minute 25s

Pour un dernier fichier de 14 Mo, au bout d'environ 3 minutes la fonction renvoie le message :
"Le poids total maximum du formulaire autorisé par le serveur est dépassé"

Donc les résultats retournés sont ceux attendus et le serveur n'a pas envoyé de message d'erreur même en dépassant allégrement les max_execution_time et max_input_time.

En testant sur un deuxième mutualisé qui a une config supérieure, les max_execution_time et max_input_time peuvent aussi être dépassés sans incidence sur le téléchargement (réussi ou non réussi pour cause de dépassement du upload_max_filesize).

Peut-être ces deux serveurs ont des réglages internes qui prennent le pas sur ces deux valeurs de temps...


@joanel26 tu as testé cette fonction que je t'ai mise en lien pour voir ce qu'elle te retourne ?