Résultats de 1 à 8 sur 8

Sujet : script qui s\'arrete pas

  1. #1
    Visiteur MP
    Visiteur MP

    script qui s\'arrete pas

    Salut,

    j\'ai un ptit bug sur un site.
    j\'le developpe en local, et la po d\'pb tout marche niquel, par contre j\'ai des bugs qui apparaissent une fois en ligne.

    dernier en date :

    lorsqu\'on charge une page du site en ligne, il arrive que une fois la page chargé, le navigateur continu a attendre qqchose. et au bout d\'un bout d\'temp, il me sort :
    Fatal error: Maximum execution time of 30 seconds exceeded in Unknown on line 0

    en bas de la page.

    et donc j\'arrive pas a comprendre d\'ou ca viens. La page est completement chargé, y devrais plus rien y avoir a faire, pourkoi il me sort ce bug ? en plus evidemment il m\'indique pas la page et la ligne qui merde....

    serai-ce un bug de la version 4.1 de PHP (oui mon hebergeur est un peu en retard) ??

    quelqu\'un a une suggestion ??

    Edit :

    Juste une tite precision : J\'avais pensé a une boucle infini qui ferais ca, mais cette hypothese me semble pas credible vu que en local ca marche bien
    En plus j\'utilise un systeme de buffer, et la derniere instruction de mes pages est l\'envois du buffer, hor celui ci est bien envoyé, donc j\'vois pas comment ca pourrais etre une boucle infinie.

    Pour le moment la seule cause que j\'vois c\'est un bug de PHP 4.1. j\'v allé voir si ils parlent d\'un truc comme ca sur php.net ou autre.

  2. #2
    Visiteur MP
    Visiteur MP
    Salut Misterv,

    Bon je pense que tu cernes plutot bien le problème. Moi je ne m\'attarderai pas sur le code non plus, si tu dis que ça tourne en local.

    Le TIMER 30 seconde est la durée maximale d\'execution d\'un script php sur ton serveur. Au bout de 30 secondes, il te renvoie une erreur :
    Fatal error: Maximum execution time of 30 seconds exceeded in Unknown on line 0 et la page est chargée complètement, c\'est normal, puisque tout s\'arrete ( le complètement en php signifie -> ce que ça merdouille... lol).

    Moi j\'ai quand meme une question : Normalement, pour executer ces requetes(en local), ça prend combien de temps ?? C\'est à la limite des 30 secondes ? Ensuite, est ce que d\'autres scripts te font la meme choses ??

    En plus j\'utilise un systeme de buffer, et la derniere instruction de mes pages est l\'envois du buffer, hor celui ci est bien envoyé, donc j\'vois pas comment ca pourrais etre une boucle infinie.
    Ton analyse me semble correcte, maintenant n\'oublies pas que dans un script php, un truc qui marche peut provoquer une autre erreur invisible...

    Solution 1 :
    Pour vérifier fais un echo apres ton envoi de buffer.

    Solution 2 :
    Enfin tu peux débugger en faisant tourner un boucle très longue, mais pas infinie, à la fin de ton script pour voir s\'il y arrive et ou il bloque.


    Mais je pense quand meme que ton problème vient de la durée de réponse du serveur.
    Solution ultime :
    Fait une redirection après ton envoi de buffer, sur une page qui contient rien, tu blueseras le timer...
    :wink:


    Tiens moi au courant si tu trouves un rapport de bug dans php4.1 à ce sujet...

    ++

  3. #3
    Visiteur MP
    Visiteur MP
    en local, mon script met a peu pres 0.1 seconde a s\'executer, donc tres tres loin des 30s.

    En ligne, je ne sais pas pourquoi, le script met entre 3 et 8 secondes a s\'executer (calcul du temp avant envois du buffer, donc normalement le temps de transfert est pas pris en compte)

    donc deja la y a un petit mistere, mais ca devrais pas me faire d\'erreur de max execution time.


    j\'precise un peu comment les choses se presentent :

    Je tape l\'URL dans l\'navigateur.
    apres maxi une dixaine de secondes, la page s\'affiche mais le navigateur attend toujours qqchose.
    apres longtemp (peut etre 30s mais ca m\'a l\'air plus long que ca en fait) le message apparait et le navigateur dit que la page est fini de chargée.


    J\'avais essayé de mettre un \'die();\' a la fin de mon script, apres le \'ob_end_flush();\'.
    mais y me semble que j\'avais le meme pb. je vais retester. et puis je vais aussi tester d\'afficher des trucs apres.



    Les choses qui me sembles chelou :

    - le message qui peut pas me dire le fichier ou il a trouvé l\'erreur : in Unknown on line 0

    - le temps d\'execution ultra long de mon script une fois online. pour essayer d\'comprendre ca j\'v voir avec mon hebergeur, peut etre qu\'ils hebergent sur des machines de merde (deja ils ont une version php un peu depassé, peut etre que les machines aussi)

  4. #4
    Visiteur MP
    Visiteur MP
    apres un ti test :

    si j\'fait un echo apres l\'envois du buffer, ca marche, le texte est bien affiché, mais ca fait toujours le pb.... comprend pas moi.

    mes fin de script sont comme ca :

    ob_end_flush();
    echo \'temps de chargement ........\';
    die();

    ca affiche le echo, mais ca prend pas en compte le die() apparemment.

    et puis la temps de chargement de la page est toujours ultra long: environs 6s !! (sans compter le plantage apres qui met 30s ou plus a s\'afficher)

    alors que en local je confirme les 0.1s

  5. #5
    Visiteur MP
    Visiteur MP
    Pour le temps d\'execution c\'est tout à fait possible que ton hébergeur soit lent, c\'est pratiquement normal donc que tu mette 6 secondes. Et puis il y a la connexion et le transport des infos par le réseau, faut pas oublier, c\'est différent du local.

    Bref t\'as tenté la redirection à la fin de ton script, pour voir si elle se faisait bien et que tu n\'avais plus d\'erreur de timer. Pense à envoyer ton affichage dans un fichier txt par exemple comme ça meme apres la redirection, tu pourras voir si tout c\'est bien passé lors de l\'exec de ton premier script.

    :

  6. #6
    Visiteur MP
    Visiteur MP
    Bon, j\'ai resolu mon probleme..... mais j\'ai due faire des concessions :

    et la cause de mon pb etait en fait ...... html_entities_decode()

    cette saleté de fonction m\'avait deja posé pb avant, donc c\'est decidé je la supprime de mon vocabulaire !! :

    en effet apres l\'instalation dans mon script de tout un systeme de timing et de debuggage, j\'ai constaté que cette fonction bouffe enormement de temps !!!!

    du coup apres l\'avoir supprimé (et avoir retravaillé mon script en meme temps) le temps d\'execution passe :

    en local de (entre 0.1s et 0.2s) a (entre 0.04s et 0.05s)

    en ligne de (entre 3s et 15s !!!!) a (entre 0.1s et 1s)

    donc grosse amelioration !!

    bien content moi :

    Donc un conseil a tous les lecteurs :

    N\'utilisez pas html_entities_decode(), c\'est une m**** cette fonction !!

  7. #7
    Visiteur MP
    Visiteur MP
    Salut MisterV,
    C\'est quoi ça html_entities_decode() ???
    J\'ai jamais utilisé cette fonction !!! Elle existe dpuis quand ??
    ça convertit toutes les entités HTML en caractères normaux ?? comme html_entity_decode ??

    :?:

  8. #8
    Visiteur MP
    Visiteur MP
    nop c\'est moi qui m\'suis trompé dans l\'nom d\'la fonction :

    c\'est html_entity_decode que j\'voulais dire.

    et cette fonction est a eviter a mon avi !! (en tout cas pour les version 4.3 de php et plus vieilles)

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé