Page 1 sur 1

Réunitialisation de la fonction.

Posté : 21 mai 2007, 19:01
par orgerix
Bonjour,

J'ai créé une fonction qui permet de consulter des données sur un serveur distant. Il faut cepandant que je sois connecté pour les avoir. Donc j'ai une autre fonction qui me connecte. Le problème, c'est comment faire pour faire redémarrer la fonction une fois qu'il y a eu la connexion ?

Je pensais un truc du style
function get($a)
 {if(!$connexion)
  {connxion();
   get($a);
 }
[...]
}
Cependant, est ce la meilleur méthode ? ($connexion est pour symobiliser l'existance de lé connexion) Et est ce que le retour des valeur fonctionne ?

Posté : 21 mai 2007, 20:05
par Cyrano
Une fonction est exécutée à chaque appel. Donc si tu en as à nouveau besoin, tu refais un appel avec l'envoi éventuels d'autres paramètres, tout simplement.

Mais je soupçonne autre chose à travers ta question, essaye de préciser un peu plus ce que tu veux pouvoir faire ?

Posté : 21 mai 2007, 20:37
par orgerix
Quand j'utilise la fonction, j'appelle des données d'un serveur. Si je ne suis pas connnecté, les données seront d'un type défini donc j'utilise la fonction connexion(). Cependant, il faut je réappelle la fonction après pour avoir les bonnes données (et non le message m'indiquant que je ne suis pas connecté).

Est ce que ma solution est la bonne ?

Posté : 21 mai 2007, 23:05
par Cyrano
Je ne peux pas dire qu'elle soit mauvaise sans voir un peu plus de code :-k

Posté : 22 mai 2007, 13:26
par orgerix
Voici ma fonction.

Je ne sais pas trop si elle marche puisque jusqu'a présente je faisait la connexion à chaque appel et donc je pensais un peu optimiser (surtout que j'ai remarqué que les fonction cURL prennent pas mal de ressources)
function getdonnee($a)
{$curl=curl_init("www.unsite.com/donne.php?donne=$a");
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
$page=curl_exec($curl);
if($page==$erreurpasconnecte)
	{connexion();
	getdonnee($a);}
elseif($page==$erreurnontrouvé)
	{return(FALSE);}
else
	{return($page);}
}

Posté : 22 mai 2007, 14:11
par Cyrano
D'abord, on ne met pas d'accent sur une variable ($erreurnontrouve et non $erreurnontrouvé).
Ensuite, Où sont donc initialisées les variables $erreurpasconnecte et $erreurnontrouve :?:
Enfin, écrit un code lisible. Faire compact, c'est bien, mais trop, c'est comme pas assez :
<?php
function getdonnee($a)
{
    $curl = curl_init("www.unsite.com/donne.php?donne=". $a);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
    $page = curl_exec($curl);
    if($page == $erreurpasconnecte)
    {
        connexion();
        getdonnee($a);
    }
    elseif($page == $erreurnontrouve)
    {
        return(false);
    }
    else
    {
        return($page);
    }
}
?>

Posté : 22 mai 2007, 17:12
par orgerix
Les variables sont la pour indiquer les message d'erreur. Je les remplacerai dans le script final.

Sinon, est ce que mon rappell de la fonction est bien utilisé ?

Posté : 22 mai 2007, 18:32
par Cyrano
On ne peut pas te répondre sur du "peut-être plus tard quand j'aurais mis certains détails au point" Tu dois mettre les valeurs correspondant à tes variable et ne pas remettre à plus tard. Vouloir aller plus vite que la musique est complètement vain et va te faire perdre du temps.

Ensuite il manque ta fonction connexion() : à priori, je ne vois pas pourquoi ça ne fonctionnerait pas.

As-tu testé ce code et qu'as-tu obtenu ? es-tu satisfait ou non du résultat ou bien obtiens-tu des messages d'erreur : le cas échéant, lesquels ?

Posté : 24 mai 2007, 09:53
par orgerix
Bon, mon code marchait sur mon serveur d'essai, et pas sur mon serveur free...

j'ai donc simplifier à l'extreme pour arriver à
$url = 'http://www.unsite.com/unepage.php';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);
echo $page;
Et la page reste désespérement blanche...

Posté : 24 mai 2007, 12:27
par Cyrano
Sur free.fr, il n'est pas certain que les extensions curl soient activées, vérifie donc dans le phpinfo...:-k

Posté : 24 mai 2007, 12:47
par orgerix
Elle le sont...

CURL support enabled
CURL Information libcurl/7.15.4 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.3