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 :

Utilisation de la mémoire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut Utilisation de la mémoire
    j'essais d'afficher une liste de pays ainsi que le prix de leur numéro virtuel a partir d'un api mais jai ce message d'erreur:
    Fatal error: Allowed memory size of 77594624 bytes exhausted (tried to allocate 8019 bytes) in...
    en plus il ne m'affiche pas tous les pays
    voici mon code
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    <?php
     
    set_include_path('VoxAPIClient-php/libs/PEAR');
    include('VoxAPIClient-php/VoxAPIClient.php');
    include('VoxAPIClient-php/Requests/UserToken.php');
    include('VoxAPIClient-php/Requests/GetCountriesListRequest.php');
    include('VoxAPIClient-php/Requests/GetStatesListRequest.php');
    include('VoxAPIClient-php/Requests/GetDIDGroupListRequest.php');
    include('VoxAPIClient-php/Requests/PlaceDIDsOrderRequest.php');
    include('VoxAPIClient-php/Requests/DIDGroupFilter.php');
     
    function getToken(){
    	return new UserToken('login','password');
    }
    //fonction qui récupére les pays
    function getCountriesList(){
    	$client = new VoxAPIClient('http://www.voxbone.com/VoxAPI/services/VoxAPI?wsdl', true);
     
    	$token = getToken();
    	$request = new GetCountriesListRequest( $token );
    $request->setDIDType('GEOGRAPHIC');
    	$geographic = $client->getCountriesList( $request );
    	/*echo '<pre>';
     print_r($geographic);
     echo '</pre>';*/
     $token = getToken();
    	$request= new GetCountriesListRequest( $token );
            $request->setDIDType('NATIONAL');
     
    	$national= $client->getCountriesList( $request );
       //$response= array_merge($geographic, $national);
     
     		//$response =array_unique($array);
    				$response = array( ) ; // Tableau dédoublonné
    foreach ( array_merge($geographic, $national) as $country ) {
        $response[$country->CountryID] = $country ;
    }
           return $response;
    	/*echo '<pre>';
    		print_r($client->debug());
    	echo '</pre>';
    */
     
    	echo '<pre>';
    	print_r($response);
    	echo '</pre>';
     
    	return $response;
    }
     
    function getStatesList( $countryID ){
    	$client = new VoxAPIClient('http://www.voxbone.com/VoxAPI/services/VoxAPI?WSDL', true);
    	$token = getToken();
    	$request = new GetStatesListRequest($token);
    	$request->setCountryID($countryID);
     
    	$response =  $client->getStatesList($request);
    	return $response;
    }
    //function ou on peut réupérer le prix des numéros virtuels de chaque pays
    function getDIDGroupList( $countryID, $stateID=-1 ){
    	$client = new VoxAPIClient('http://www.voxbone.com/VoxAPI/services/VoxAPI?wsdl', true);
    	$token = getToken();
    	$request = new GetDIDGroupListRequest($token);
    	$request->setCountryID($countryID);
    	$filter = new DIDGroupFilter();
    	if( $stateID != -1 ){
    		$filter->setStateID($stateID);
    	}
    	$filter->setHideEmpty(false);
    	$request->setFilter($filter);
    	$request->setType('GEOGRAPHIC');
     
    	$geographic =  $client->getDIDGroupList($request);
     
    	$request = new GetDIDGroupListRequest($token);
    	$request->setCountryID($countryID);
    	$filter = new DIDGroupFilter();
    	if( $stateID != -1 ){
    		$filter->setStateID($stateID);
    	}
    	$filter->setHideEmpty(false);
    	$request->setFilter($filter);
    	$request->setType('NATIONAL');
    	$national =  $client->getDIDGroupList($request);
    	if( is_array($national) and is_array($geographic) ){
          $response = array_merge($geographic, $national);
     
     }else if(!empty($national) and is_array($geographic)){
      $array= get_object_vars($national); 
     /* echo '<pre>';
     print_r($array);
     echo '</pre>';*/
      $response = array_merge($geographic,$array);
     
     }else if(!empty($national) and empty($geographic)){
      $response = $national;
     }else{
     $response = $geographic;
     }
     
    	/*echo '<pre>';
    	print_r($response);
    	echo '</pre>';*/
     
    	return $response;
    }
     
    function placeDIDsOrder( $didgroupID, $quantity ){
    	$client = new VoxAPIClient('http://www.voxbone.com/VoxAPI/services/VoxAPI?WSDL', true);
    	$token = getToken();
    	$request = new PlaceDIDsOrderRequest($token);
    	$request->setDIDGroupID($didgroupID);
    	$request->setQuantity($quantity);
    	$response =  $client->placeDIDsOrder($request);
    	//print $client->debug();
    	return $response;
    }
     
    ?>
    voici le code d'affichage
    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
     
    <?php
     
    $countriesList = getCountriesList();
     
    echo '<table align="center" border="1">';
    echo '<tr>';
    echo '<td bgcolor="#0055FF" class=Style17>Country</td>';
    echo '<td bgcolor="#0055FF" class=Style17>Price</td>';
    echo '</tr>';
     
     
    foreach( $countriesList as $country ){
     
    $didgroupList = getDIDGroupList($country->CountryID);/*quand j'enléve cette partie il m'affiche plus lerreur et m'affiche toute la liste alors que j'en ai besoin pour récuperer le prix du numéro virtuel*/
    foreach( $didgroupList as $didgroup ){
    		 $pricing1 =$didgroup->Setup100/100;
    		 $countryname=$didgroup->CountryName;
    		}
    echo'<tr>';
     
    printf("<td bgcolor=#D0D0D0><input class=Style9 size=30 type=text name=number value=\"$country->CountryName\" readonly /></td>");
    printf("<td bgcolor=#D0D0D0><input class=Style9 size=30 type=text name=number value=\"0  \" readonly /></td></tr>");
    //$row = mysql_fetch_row($result);
     
    }
     
    echo'</table>';
    ?>
    merci d'avance

  2. #2
    Membre expérimenté Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Par défaut
    Bonjour,

    Ton php a une valeur memory_limit inférieur à celle executée par ton script. Regarde du côté de ton fichier php.ini à la ligne ini_set("memory_limit","8M");
    La valeur par défaut est fixée à 8 mais tu peux modifier cet élément ce qui est une valeur correct pour éviter les surcharges

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    j'ai essayé de changer la valeur a partir d'un htaccess mais jai tjr la méme erreur sauf que ce sont les valeurs de la mémoire qui changent
    j'ai mis dans httaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php_value memory_limit 128M
    c'était a 76M maintenant voici l'erreur qu'il affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 76 bytes) in

  4. #4
    Membre expérimenté Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Par défaut
    Tu travailles en local ou sur un serveur hebergé ?

    Dans la plupart des cas, une valeur de 8 ou 16 devrait suffire...

    Qu'elle est cette API qui utilise autant de ressources?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    C'est un voxApiClient il me permet de faire une application d'achat de numéro virtuel.sinon je travaille pas en local.mais est ce que le script est correct?j'ai mis un commentaire sur la ligne qui améne l'erreur

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Probléme résolu.
    au fait le probléme venait des pays comme "etats-unis" on devrait mettre une variable qui vérifie si le pays a des états ou pas
    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
     
    foreach( $countriesList as $country ){
    //$IDcontry	= $country->CountryID;
    if($country->HasStates=='true'){
    $stateID = "3";
    }else if($country->HasStates=='false'){
    $stateID = "-1";
    }
     
    $didgroupList = getDIDGroupList($country->CountryID,$stateID);
    foreach( $didgroupList as $didgroup ){
     
    		 $pricing1 =$didgroup->Setup100/100;
    		 $countryname=$didgroup->CountryName;
    		}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de la mémoire vive par un programme
    Par Pixcoder dans le forum C++
    Réponses: 13
    Dernier message: 25/09/2006, 12h36
  2. Réponses: 21
    Dernier message: 21/07/2006, 16h55
  3. Utilisation de la mémoire dynamique
    Par Stany dans le forum Windows
    Réponses: 17
    Dernier message: 27/04/2006, 11h39
  4. Utilisation de la mémoire
    Par jagboys dans le forum MFC
    Réponses: 1
    Dernier message: 12/11/2005, 16h30
  5. Utilisation de la mémoire vive....
    Par Neilos dans le forum Windows
    Réponses: 9
    Dernier message: 24/11/2003, 11h09

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