IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

faire marcher un script qui dure longtemps


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut faire marcher un script qui dure longtemps
    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 ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    ç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)...

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Augmente cette durée
    Pour assurer, j'ai mis ça : avant 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...

    ç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;
    }

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    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 :
    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.
    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().

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Comme je n'ai pas accès au php.ini, j'ai mis ça dans le script qui fait l'upload :
    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);
    mais ça ne marche toujours pas...

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête qui dure longtemps sans résultat
    Par SALMHSN dans le forum PL/SQL
    Réponses: 13
    Dernier message: 03/05/2011, 12h04
  2. Compréhention pour faire marcher un code qui génere une torche
    Par malicia_bm dans le forum ActionScript 3
    Réponses: 7
    Dernier message: 12/11/2008, 16h02
  3. Script qui s'arrète !! Comment faire autrement ?
    Par Xplosif² dans le forum C++
    Réponses: 5
    Dernier message: 25/02/2006, 22h10
  4. Faire un script qui me créer un script
    Par tripper.dim dans le forum Oracle
    Réponses: 8
    Dernier message: 30/11/2005, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo