Bonjour,
j'effectue un upload avec la fonction move_uploaded_file, mais si je cherche à uploader un gros fichier (~40 MO), ça échoue car ça dépasse le temps d'exécution pour les scripts (j'ai essayé chez OVH et 1&1). Y a-t-il une solution ?
Bonjour,
j'effectue un upload avec la fonction move_uploaded_file, mais si je cherche à uploader un gros fichier (~40 MO), ça échoue car ça dépasse le temps d'exécution pour les scripts (j'ai essayé chez OVH et 1&1). Y a-t-il une solution ?
Augmente cette durée
http://www.php.net/manual/fr/info.co...execution-time
ça peut aussi échouer parce que ça dépasse le post_max_size et dans ce cas tu auras aussi une page blanche (à moins de gérer cette erreur)...
Pour assurer, j'ai mis ça :Augmente cette duréeavant l'upload (alors qu'à mon avis, ça ne dépasse pas la minute) et ça échoue quand même, chez OVH, comme chez 1&1...
Code : Sélectionner tout - Visualiser dans une fenêtre à part set_time_limit (240);
ça peut aussi échouer parce que ça dépasse le post_max_size et dans ce cas tu auras aussi une page blanche (à moins de gérer cette erreur)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $size=$_FILES['uploadfile']['size']; if($size>67108864) { echo "error file size > 64 MB"; unlink($_FILES['uploadfile']['tmp_name']); exit; }
Plusieurs points à gérer en fait :
La durée d'exécution du script (max_execution_time). Dans ce cas là je me permets de la désactiver sur le script :
Ensuite il faut gérer les limites de mémoire autorisée par PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part set_time_limit (0);
Ces trois propriétés sont modifiables pour l'ensembel de ton serveur sur le fichier php.ini, ou alors pour le script courant en utilisant ini_set().post_max_size integer
Définit la taille maximale des données reçues par la méthode POST. Cette option affecte également les fichiers chargés. Pour charger de gros fichiers, cette valeur doit être plus grande que la valeur de upload_max_filesize. Si la limitation de mémoire est activée par votre script de configuration, memory_limit affectera également les fichiers chargés. De façon générale, memory_limit doit être plus grand que post_max_size. Lorsqu'un entier est utilisé, sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique comme décrit dans cette entrée de la FAQ.. Dans le cas où la taille des données reçues par la méthode POST est plus grande que post_max_size, les superglobales $_POST et $_FILES seront vides. Ceci peut être surveillé de différentes façons, e.g. en passant une variable $_GET au script qui traite les données, i.e. <form action="edit.php?processed=1">, et ainsi vérifier si $_GET['processed'] est défini.
Comme je n'ai pas accès au php.ini, j'ai mis ça dans le script qui fait l'upload :mais ça ne marche toujours pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 set_time_limit (0); ini_set('post_max_size ',77108864); ini_set('memory_limit ',87108864);
Je me demande comment tu arrives a ces valeurs.
Il est très probable que ton hebergeur n'autorise pas la modification des durées de scripts.
il reste le "upload_max_file_size" à changer...
- upload_max_file_size : taille maxi d'un fichier uploadé
- post_max_size : taille max des données POST (= upload_max_file_size + les reste des données de formulaires (rajoute 2M à upload_max_file_size si tu n'as qu'1 fichier à uploader))
- memory_limit : mémoire max utilisée par ton script courant, donc données post + traitements effectués... A ne changer que pour ces scripts d'upload bien particuliers, mais laisser une valeur par défaut (php.ini) raisonnable
Partager