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 :

différence entre les résultats d'un calcul par cli et apache


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut différence entre les résultats d'un calcul par cli et apache
    Bonjour,

    Dans mon entreprise j'ai écrit un bout de code que je n'ai pas le droit de vous montrer. Ce code fait des calculs arithmétique avec des flottants.

    Avec les mêmes paramètres en entrée j'exécute ce code avec une config LAMP plus ou moins standard (des libraries externes compilées avec apache mais qui n'interviennent pas dans le calcul). Le module php n'est pas un module PHP (je ne m'en souviens plus comment on dit dans ce cas là).

    Donc j'exécute le programme par LAMP et par cli et je n'obtiens pas le même résultat. Le calcul est long, brasse beaucoup de données et j'obtiens 2% de différences entre les valeurs. Des valeurs CLI toujours supérieurs à celle de LAMP.

    Après avoir analysé le code j'en conclu qu'il y a une variation entre les calculs effectué par PHP en CLI et en LAMP.

    Pouvez me confirmer qu'il peut exister des différences de calcul entre CLI et LAMP ?
    Si oui, avez des liens de ces problèmes ?

    Merci.

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Que tu fasse 3*3 en Chine ou au Brésil, ça ferait toujours 9....


    Par contre, si tu fais 3,1 * 3,0, selon ton arrondis tu aurais 9 ou 9,3...

    Et à mon avis ça vient de là.

    Par exemple, dans ton calcul un peu plus complexe, si tu as 6,225534 / 3,35353, peut-être que le résultat en CLI sera tronqué/arrondi au nombre de de chiffres de l'élément le plus grand, donc 7 chiffres, alors qu'en PHP il aura autant de chiffres que nécessaire.

    C'est la seule explication que je vois à ton problème, car il n'y a aucune raison pour que les calculs diffèrent.

    Cela doit être configurable, où, je ne saurais le dire, mais le nombre de chiffres après la virgule doit être paramétrable.
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Regarde si bcmath.scale ou precision sont identiques dans les php.ini (il y a peut être d'autres options, mais je ne les ai pas).

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,
    Citation Envoyé par s.mobi Voir le message
    Pouvez me confirmer qu'il peut exister des différences de calcul entre CLI et LAMP ?
    Il peut effectivement exister des différences, mais elle ne sont pas le fait du langage PHP lui-même. Tu ne précises pas si la version CLI et la version Apache sont exécutées sur la même machine, est-ce le cas ? S'il ne s'agit pas de la même machine, ces différences peuvent s'expliquer par des versions différentes de la libc, ou des options de compilation différentes...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci de vos réponses.

    J'ai pas été précis. Le php est une version 4.0 pas 5.0+ . Quand je parlai de CLI je voulai dire PHP en ligne de commande. sur la même machine. Mais le php du web est un cgi derrière apache.

    Je ne suis plus sur les machines . Mais je pourrais vérifier que les versions de php sont bien les mêmes.

    En faîtes je pensai à des bugs connus dans les capacités de calculs de php 4.0 ou dans des différences de calculs entre les différentes versions de php en cli ou cgi.

    Je m'en doute bien que dans les calculs de type 1+1=2 PHP s'en sort correctement. Mais la il s'agit de calcul avec sinus et chiffre signicatif en 10E05 . Est-ce que ca marche aussi bien.

    Car j'entre les mêmes données, ce sont les mêmes fichiers et j'ai des résultats différents à la sortie. J'ai passé la matinée à vérifié les données, je n'ai rien trouvé.

    N'y aurait-il pas des faiblesses connues ?

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par s.mobi Voir le message
    Car j'entre les mêmes données, ce sont les mêmes fichiers et j'ai des résultats différents à la sortie.
    Ce ne sont peut-être pas les calculs eux-mêmes qui induisent cette erreur, ça ne peut pas venir de l'enregistrement des résultats ? Y-a-t-il des différences dans la façon dont ils sont enregistrés entre les deux versions ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Les données sur lesquels est appliqué l'algorithme sont dans une base mysql 5.0.* . C'est la même base qui est attaqué par les cli et web. Elles ne changent pas au cours du temps. Le calcul est dans son ensemble paramétrer par les entrées de l'utilisateur (période).

    Je suis arrivé dans ma recherche du bug jusqu'a l'entrée dans la fonction de calcul. Les paramètres en entrée sont identiques des deux côtés.

    Pour information, c'est du calcul spatial qui est fait. Cependant toutes les fonctions sont maison. On utilise pas de librairie SIG tierce.

    Merci.

Discussions similaires

  1. [WD17] calculer la différence entre les lignes d'une table
    Par cigalou84 dans le forum WinDev
    Réponses: 4
    Dernier message: 23/12/2013, 15h28
  2. [WD17] Calcul différence entre les heures
    Par karim15 dans le forum WinDev
    Réponses: 1
    Dernier message: 28/07/2013, 10h03
  3. Réponses: 67
    Dernier message: 16/12/2007, 13h41
  4. fopen -> différences entres les types d'ouvertur
    Par Patrick PETIT dans le forum C
    Réponses: 10
    Dernier message: 01/06/2003, 18h19
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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