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 :

Limites d'exécution d'un script


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut Limites d'exécution d'un script
    Bonjour, je me retrouve confronté à un problème assez gênant ces derniers jours, et après avoir passé tous mes scripts au crible je n'ai pas pu trouver l'origine de mon problème je me permet donc de vous demander de l'aide !


    Mes scripts s'arrêtent de tourner et ne m'affichent pas la suite de la page sans prévenir, sans message d'erreur ou notice (même quand je les actives :S)

    J'ai regardé du coté du temps d'exécution, aucun soucis à ce niveau.
    Existe-il des limites ou des contraintes sur les boucles dans les scripts?

    Mes différentes boucle posant problème se présentent de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while(!feof($fp)) 
    		{
    			$Ligne = fgets($fp,255);
    			foreach ($MotsInterdits as $value) 
    			{
                            }
                     }

    Cordialement.

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Points : 160
    Points
    160
    Par défaut
    oui php se mets en "défaut" si il n'arrête pas de faire une action récursive (donc répété et rapide) sans s'arrêter, au bout d'un moment il se trouve face a une boucle sans fin et préfère arrêter l'exécution du script...

    Car tout le long de la boucle, le code continue a charger, donc surcharge la mémoire serveur...

    dans quel cas utilise tu ton while...???
    ne peut il pas être remplacé par un "for" qui chargera légerment l'exécution sur le tas, mais php étant informé de la limite devrais le laisser aller plus loin...

    Moi personnellement je ne suis pas fana du while a cause des ses boucles infinies qui peuvent survenir, je préfère tout stocker en tableau et compter mes valeur en même temps je peux contrôler le nombre de fois que mon code est répété...

  3. #3
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    oui php se mets en "défaut" si il n'arrête pas de faire une action récursive (donc répété et rapide) sans s'arrêter, au bout d'un moment il se trouve face a une boucle sans fin et préfère arrêter l'exécution du script...
    Ce comportement n'existe pas.
    Le script s'arrête soit parce que la limite mémoire est atteinte, soit parce que la limite de temps est atteinte.
    PHP n'a pas de difficulté a traiter des actions répétées et une boucle n'est pas plus rapide qu'un code linéaire.

    Egalement l'utilisation mémoire n'augmente que si le traitement cumule des données mais cela ne vient pas du mécanisme de boucle lui même.

    Une boucle for mal conditionnée peut provoquer un traitement sans fin, tout comme une boucle while.
    PHP n'a pas besoin d’être rassuré sur le nombre de boucle qu'il va devoir traiter ; il ne le sait d'ailleurs pas, il se contente de traiter les tours les un après les autres.
    Il faut utiliser le type de boucle adaptée à ce qu'on veut faire ; ajouter des contrôles supplémentaires et une perte de temps.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Dans mes boucles je lis des fichiers texte ligne en ligne en faisant des contrôles sur le contenu.
    Je conserve une bonne partit des résultats dans des variables.

    Mes fichiers font facilement 10000 lignes... Ça doit venir de la, les variables doivent prendre trop de ressources :S

    Et hélas je ne peux pas faire ça avec des bases de données, mon patron veut que ce script soit installé sans bdd, en copiant le dossier.. -_-'

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut déjà que tu determines avec certitude le point bloquant.
    Contrôle ton log d'erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. limitation de temps pour l'exécution d'un script php
    Par franco9 dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2013, 14h09
  2. Le temps d'exécution de vos scripts perl!!
    Par djibril dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2009, 10h42
  3. Réponses: 4
    Dernier message: 21/01/2008, 22h30
  4. [CSV] Temps d'exécution d'un script
    Par Sangdrax1604 dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 18h49
  5. Réponses: 6
    Dernier message: 29/11/2005, 13h22

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