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 :

getParameter()==NULL et mémoire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 46
    Points
    46
    Par défaut getParameter()==NULL et mémoire
    Salut !

    Je suis en train de développer une page web sur laquelle j'affiche un graphique de données correspondant aux critères de l'utilisateur.

    J'ai donc un code HTML, qui appelle un code PHP(ci-dessous) qui lui consulte la base de donnée, crée l'applet ...

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    echo "<APPLET\n";
    echo "CODEBASE=\"./applets\"";
    echo "CODE=\"applet.init.AppletGraph\" WIDTH=100% HEIGHT=600\n";
    echo "ARCHIVE=\"jcommon-1.0.16.jar, jfreechart-1.0.13.jar, jxl.jar, iText-5.0.1.jar, javacsv.jar, sAppletGraph.jar\">\n";
    echo "<PARAM NAME=typeRep VALUE=\"".$_POST['typeRepGraphique']."\">\n";
    echo "<PARAM NAME=parameter VALUE=\"".$parameter[$i]."\">\n";
    echo "<PARAM NAME=sensor VALUE=\"".$sensorname[$i]."\">\n";
    echo "<PARAM NAME=line VALUE=\"".$sensorline[$i]."\">\n";
    echo "<PARAM NAME=floor VALUE=\"".$sensorfloor[$i]."\">\n";
     
    //definition requete SQL
    $select="select TO_CHAR(TS, 'YYYY-MM-DD HH24:MI:SS') as TS , ".$parameter[$i]." from ".$sensortable[$i]." where TS> to_date('".$_POST['dateFirst']."','DD/MM/YYYY HH24:MI:SS') and TS< to_date('".$_POST['dateLast']."','DD-MM-YYYY HH24:MI:SS') order by TS";
    $reqSelect = oci_parse($connection, $select) or die('SQL Error ! <br/>'.$select.'<br/>');
    oci_execute($reqSelect);
     
    $string="";
    $indice=0;
    $flag=0;
     
    //lecture ligne par ligne du resultat de la requete
    //resultat sauvegardés sous la forme date%valeur
    //données séparées par un @
    //==> date%valeur@date%valeur@date%valeur ....
     
    while ($rowSelect = oci_fetch_array($reqSelect, OCI_NUM+OCI_RETURN_NULLS)) {
     
       $time=$rowSelect[0]; // TS
       $value=$rowSelect[1]; // PARAMETER
     
       if ($string == "") {
          $string=$time."%".$value;
       }
       else {
          //!!!! OPTIMISATION !!!!
          //Le traitement des grandes chaines par PHP n'est pas optimale...
          // => Limitation de la chaine à 100000 caractères
          // string_[1], string_[2] ... qu'on concatène après
     
          if (strlen($string) >= 100000) {
             $string_[$indice]=$string;
             $indice++;
             $string=$time.'%'.$value;
          }
          else {
             $string=$string.'@'.$time.'%'.$value;
          }
       }
       $flag=1;
     
    }
    oci_free_statement($reqSelect);
     
    //ajout derniers résultats dans le tableau
    $string_[$indice]=$string;
     
    //Concaténation
    if($flag==1){
       $string="";
       for ($in=0;$in<=$indice;$in++) {
     
          if ($string == "") { //début construction chaine
             $string=$string_[$in];
          }
          else {
             $string=$string.'@'.$string_[$in];
          }
       }
       //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       //transmission à l'applet des données 
       //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       echo "<PARAM NAME=\"valeur\" VALUE=\"".$string."\">\n";
    }
    else {
    //rentre des valeurs bidons si lecture BDD pas fonctionnéé, flag==0
     
    @list($jour,$mois,$annee)=explode('/',$_POST['dateFirst']);
    $dateFirst=date('Y-m-d H:i:s',mktime(0,0,0,$mois,$jour,$annee));
    @list($jour,$mois,$annee)=explode('/',$_POST['dateLast']);
    $dateLast=date('Y-m-d H:i:s',mktime(0,0,0,$mois,$jour,$annee));
    $string=$dateFirst."%0@".$dateLast."%0";
    echo "<PARAM NAME=\"valeur\" VALUE=\"".$string."\">\n";
    }
     
     
    echo "</APPLET>\n";
    ... donc tout naturellement dans l'applet JAVA pour récupérer les données je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    boolean checkbool = false;
    if(getParameter("valeur")!=null) {
        System.out.println("getParameter() OK !!!");
        checkbool=true;
    }
    if (checkbool) {
        res = getParameter("valeur").split("@");
        ...
    }
    else {
        System.out.println("getParameter() renvoie la valeur NULL !!!");
    }

    Il se trouve que j'ai rajouté après coup le test sur getParameter car celui-ci me renvoit, lorsque la quantité de donnée est trop importante, la valeur NULL comme si le PHP n'avait pas communiqué à l'applet le paramètre demandé.

    Ceci semble indiquer qu'il existe une limitation mémoire quelque part mais seulement je n'arrive pas à savoir où.

    Est-ce propre au getParameter() ? Est-ce qu'effectivement j'aurais pu saturer une mémoire au point que le PHP aurait stoppé sont déroulement avant d'envoyer ce param à l'applet ?

    Auriez vous une idée ?

    Merci !!!!

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par nodules Voir le message
    PHP aurait stoppé sont déroulement avant d'envoyer ce param à l'applet ?

    Auriez vous une idée ?
    Le plus simple est de regarder la source de la page en question pour voir dans un premier temps si elle est complète.

  3. #3
    Membre du Club
    Profil pro
    Info
    Inscrit en
    Novembre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Info

    Informations forums :
    Inscription : Novembre 2009
    Messages : 60
    Points : 46
    Points
    46
    Par défaut
    merci pour ton intérêt ....

    sans parler du source en fait, dans le PHP, juste après la fermeture de la borne </APPLET>, je fais des prints qui n'apparaissent pas quand la charge (quantité) de données à afficher est trop importante.
    C'est d'ailleurs pour ça que j'ai aussi ciblé ma question autour de la mémoire liée à PHP ...

    Donc, primo, si c'est le cas, verriez vous un moyen de contourner le problème ou décharger la mémoire ?
    Secondo, un gars sur un forum SunJava m'a dit que le <PARAM> de l'applet n'était pas fait pour supporter de long strings comme les miens ... cela vous dit-il quelque chose et qu'imagineriez vous ici encore pour contourner le problème ?

    Merci encore !

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par nodules Voir le message
    merci pour ton intérêt ....

    sans parler du source en fait, dans le PHP, juste après la fermeture de la borne </APPLET>, je fais des prints qui n'apparaissent pas quand la charge (quantité) de données à afficher est trop importante.
    C'est d'ailleurs pour ça que j'ai aussi ciblé ma question autour de la mémoire liée à PHP ...
    Et c'est pour ça que je déplace dans la section PHP!

Discussions similaires

  1. problème jsp servlets getParameter null
    Par JohnSheppard dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 14/05/2013, 16h36
  2. getParameter null dans la servlet
    Par roxie0587 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/01/2013, 10h12
  3. Retour malloc NULL avec mémoire vive dispo
    Par Babcool dans le forum Débuter
    Réponses: 9
    Dernier message: 07/09/2010, 23h01
  4. Request.getParameter renvoie NULL
    Par the java lover dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/10/2006, 10h34
  5. [Info][Mémoire] utilisée pour un pointeur null
    Par thomas_strass dans le forum Langage
    Réponses: 14
    Dernier message: 04/11/2004, 12h48

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