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 :

Jouer avec les retour d'informations et éviter l'expiration du delai de chargement


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut Jouer avec les retour d'informations et éviter l'expiration du delai de chargement
    Bonjour,

    J'utilise une page pour effectuer differentes opérations de maintenance. D'abord transferer via la fonction FTP un dossier important sur un serveur distant puis realiser des requetes sur un bdd (importantes egalement).

    Pour cela j'aimerai faire une page qui affiche la progression. Et j'hesite au niveau technlogies ...

    J'ai le choix entre ob_start() et compagnie et des fonctions AJAX qui attendraient un retour pour lancer l'operation suivante (si vous voyez autre chose, je suis preneur).

    Le dossier fait environ 18Mo, donc il y en a pour facilement 8 ou 10mn je pense de transfert. N'importe quel navigateur normal aurait deja conclu a un probleme.

    Comment y pallier a votre avis ?

    (un define("TIME_LIMIT",xx); super important ? Ca me parait un peu cochon)
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  2. #2
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    à ta place, je ferais comme ça :
    Un script avec un bonne gestion des erreurs, qui effectue toutes les opérations.
    Tu stoque au fur et a mesure l'avancement dans une session.

    Tu fait une page php qui ne fait que récupérer la valeur de la session, que tu appelle toutes les X secondes en ajax pour afficher la progression.

    Voila, cette idée vien de la future fonctionnalité de php 5.3 qui permettra de voir l'avancement de l'upload d'un fichier grace aux sessions.

    Il reste a confirmer que la session seras bien mise à jour avant la fin du script (il me semble que oui).

    Bonne journée et bonne programmation !
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  3. #3
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Merci pour le tuyau, c'est une tres bonne idee, je vais surement la suivre. J'ai une crainte encore.

    Si je pars de l'idee que j'ai une page traitement.php qui effectue des requetes http, une premiere sur actions.php et d'autres a intervalles reguliers sur etat.php qui contient l'etat de ma session, comment etre sur que traitement.php ne se mettra pas en erreur si le script est trop long (meme appelle par une requete http) ?

    C'est fiable le define("TIME_LIMIT",xx) pour ca ?
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  4. #4
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Le plus fiable serais de mettre max_execution_time = 0 dans ton php (quoi que ça puisse poser des problèmes pour tes autres script, sinon si ton serveur n'est pas en safe_mode, tu peut ajouter ini_set ('max_execution_time', 0); qui retire toute limite de temps d'exécution.

    Voila, bonne chance et tien nous au courant!
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  5. #5
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    J'ai commence a mettre ca en place, mais malheureusement, avec un code de test tel que celui la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $_SESSION["statusInstallation"] = "Partie 1";
    sleep(5);
    $_SESSION["statusInstallation"] = "Partie 2";
    sleep(5);
    $_SESSION["statusInstallation"] = "Partie 3";
    sleep(5);
    $_SESSION["statusInstallation"] = "Partie 4";
    sleep(5);
    $_SESSION["statusInstallation"] = "Partie 5";
    sleep(5);
    exit();
    Ma requete ajax appellant toutes les secondes une page recuperant uniquement ma session rame un bon coup puis affiche Partie 5 ...
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  6. #6
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Bon c'est un peu bricole mais je m'en tire en utilisant les fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $fichier = fopen("fichierAvancee.txt","w+");
    fwrite($fichier,"partie 1<br />");
    sleep(2);
    fwrite($fichier,"partie 2<br />");
    sleep(2);
    fwrite($fichier,"partie 3<br />");
    sleep(2);
    fwrite($fichier,"partie 4<br />");
    exit();
    Et derriere, je recupere tout ca avec un rafraichissement regulier de ma div en ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = fopen("fichierAvancee.txt","r");
    print fread($fichier,4000);
    Le html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <div id="statusInstallation" style="width:200px;height:130px;border:1px solid red;">
       Etat : 
    </div>
    <div id="retourPage" style="width:200px;height:130px;border:1px solid green">
      Page : 
    </div>		
    <script>
      executerInstallation = function() {
    	var myAjax = new Ajax.Updater(
    		"retourPage",
    		"traitement.php?action=blabla",
    			{
    			method: "post",
    			parameters: "token={TOKEN}"/*,
    			onComplete: function() {
    			 	document.location.href="maPage.php"
    			        }*/
    			}
    	);
      }
      executerInstallation();
      rafraichirStatusInstallation = function() {
           rafraichirRegulierement("statusInstallation","statusInstallation.php");
      }
      rafraichirStatusInstallation();
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par keaton7 Voir le message
    Bonjour,

    J'utilise une page pour effectuer differentes opérations de maintenance. D'abord transferer via la fonction FTP un dossier important sur un serveur distant puis realiser des requetes sur un bdd (importantes egalement).
    Tu parles d'un téléchargement FTP ... mais je te signales que si tu faisais un téléchargement HTTP, tu aurais d'une part la fenétre que tu connais bien et qui est lancée pour tout téléchargement,
    D'autre part ton navigataire reçois automatiquement une info d'action en cours.

    C'est du reste par elle que transite le % d'avancement

  8. #8
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Ca fait beaucoup de donnees a tansferer par http. Je ne pense pas que ce soit vraiment fait pour ca.

    D'autre part, pour l'avancement, c'est surtout par etapes, c'est a dire :
    • Decompression de l'archive
    • Creation des entrees bdd
    • Envoi FTP des donnees necessaires
    • ...


    C'est du texte perso mon avancement, pas seulement une barre de progression.

    De plus, les données vont de serveur a serveur, le navigateur n'y verrait que du feu.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Ok alors la de serveur a serveur je ne sais pas faire
    désolé et bon courage !

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/02/2009, 14h11
  2. Jouer avec les chaines de caractères ?
    Par vr900 dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/04/2007, 16h26
  3. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 10h01
  4. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 13h15

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