Accueil
Forum PHPBoost
Développement
Développement des modules
valeur des variables _LINE_ et _FILE_
Forum PHPBoost
Développement
Développement des modules
valeur des variables _LINE_ et _FILE_
Forum PHPBoost
Salut!
Je suis en train de développer un module pour permettre l'utilisation d'une partie de la plateforme via les socket.
Ça marche assez bien, mais j'ai un soucis au niveau des requêtes sql, j'arrive à instancier mon propre $Sql en faisant un include de "kernel/framework/db/mysql.class.php", mais apparemment les variables _line et _file_ sont instanciées ailleurs.
Le soucis c'est que je ne lance pas phpboost depuis un navigateur, du coup je ne peux pas les récupérer directement.
Sont-elle des variables dynamiques ou sont-elles fixes?
Est-il possible de connaitre ses valeurs ou de savoir comment les générer?
juste au cas où, voici la fonction :
Code PHP :
et voici l'erreur que je recois :
Code TEXT :
la ligne 98 étant celle de la requête.
Merci d'avance,
Darth
Edité par Darth Le 25/03/11 à 14h27
Je suis en train de développer un module pour permettre l'utilisation d'une partie de la plateforme via les socket.
Ça marche assez bien, mais j'ai un soucis au niveau des requêtes sql, j'arrive à instancier mon propre $Sql en faisant un include de "kernel/framework/db/mysql.class.php", mais apparemment les variables _line et _file_ sont instanciées ailleurs.
Le soucis c'est que je ne lance pas phpboost depuis un navigateur, du coup je ne peux pas les récupérer directement.
Sont-elle des variables dynamiques ou sont-elles fixes?
Est-il possible de connaitre ses valeurs ou de savoir comment les générer?
juste au cas où, voici la fonction :
Code PHP :
function find_id($id) { include_once('../../kernel/framework/db/mysql.class.php'); $Sql = new Sql ( ); $row $Sql->query_array("comExt_function_list","function_name","function_location", "WHERE function_id = tes001 ",__LINE__, __FILE__); $function_path[0] = $row['function_name']; $function_path[1] = $row['function_location']; return $function_path; }
et voici l'erreur que je recois :
Code TEXT :
Parse error: syntax error, unexpected T_VARIABLE in /home/jail/home/elearning/website/comExt/server/serveur.php on line 98
la ligne 98 étant celle de la requête.
Merci d'avance,
Darth
Edité par Darth Le 25/03/11 à 14h27
Bonjour et bienvenu à toi !
Dans la 3.0 la classe SQL est instancié dans le /kernel/begin.php il est donc inutile de refaire une instance de cette classe.
Supprime donc la ligne
En revanche il faudra mettre un
Concernant
Edité par ReidLos Le 25/03/11 à 11h07
Dans la 3.0 la classe SQL est instancié dans le /kernel/begin.php il est donc inutile de refaire une instance de cette classe.
Supprime donc la ligne
$Sql = new Sql ();
En revanche il faudra mettre un
global $Sql;au début de ta fonction.
Concernant
__LINE__ et __FILE__ elle renvoi le fichier et la ligne. Cela permet d'afficher précisément l'endroit ou tu pourra avoir une erreur avec une requête. (Ce sont des constantes magiques)
Edité par ReidLos Le 25/03/11 à 11h07
même en faisant cela l'erreur est la même
(merci pour le begin, je croyais que cela ne fonctionnait que lorsque l'on lançait l'application depuis un navigateur web).
(merci pour le begin, je croyais que cela ne fonctionnait que lorsque l'on lançait l'application depuis un navigateur web).
Citation:
$row
$row $Sql->query_array("comExt_function_list","function_name","function_location", "WHERE function_id = tes001 ",__LINE__, __FILE__);
$row
= $Sql ...
oui ca j'avais vu 
En fait le soucis venait d'une variable qui ne passait pas bien à l'appel de la fonction.
mais j'ai toujours un soucis, si j'utilise begin.php il me met plein d'erreurs liées à l'environnement phpboost (que je n'utilise pas dans ce cas vu que cette page n'est pas instanciée via phpboost).
les erreurs en utilisant le begin :
Code TEXT :
Du coup j'instancie mon propre $Sql et là j'obtient comme erreur:
Code TEXT :
cette erreur est la même si je fais un $Sql->query ou un query->array.
Code PHP :
le soucis je crois c'est que je veux juste récupérer la config et la classe sql afin de profiter du multi-sgbd et de ne pas devoir refaire un fichier de config.
Maintenant sql prend-elle directement les infos de connexion dans un fichier de config ou alors les récupère-elle via l'application?
Encore une fois je ne lance pas l'application phpboost pour utiliser ce scrip, je crois que mon soucis viendrait de là non?

En fait le soucis venait d'une variable qui ne passait pas bien à l'appel de la fonction.
mais j'ai toujours un soucis, si j'utilise begin.php il me met plein d'erreurs liées à l'environnement phpboost (que je n'utilise pas dans ce cas vu que cette page n'est pas instanciée via phpboost).
les erreurs en utilisant le begin :
Code TEXT :
Warning: Cannot modify header information - headers already sent by (output started at /home/jail/home/elearning/website/comExt/server/serveur.php:48) in /home/jail/home/elearning/website/kernel/begin.php on line 41 Warning: Cannot modify header information - headers already sent by (output started at /home/jail/home/elearning/website/comExt/server/serveur.php:48) in /home/jail/home/elearning/website/kernel/begin.php on line 42 Warning: Cannot modify header information - headers already sent by (output started at /home/jail/home/elearning/website/comExt/server/serveur.php:48) in /home/jail/home/elearning/website/kernel/begin.php on line 43 Warning: require_once(../kernel/framework/util/bench.class.php) [function.require-once]: failed to open stream: No such file or directory in /home/jail/home/elearning/website/kernel/begin.php on line 46 Fatal error: require_once() [function.require]: Failed opening required '../kernel/framework/util/bench.class.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/jail/home/elearning/website/kernel/begin.php on line 46
Du coup j'instancie mon propre $Sql et là j'obtient comme erreur:
Code TEXT :
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/jail/home/elearning/website/kernel/framework/db/mysql.class.php on line 158 Fatal error: Call to a member function handler() on a non-object in /home/jail/home/elearning/website/kernel/framework/db/mysql.class.php on line 704
cette erreur est la même si je fais un $Sql->query ou un query->array.
Code PHP :
$row = $Sql->query ("SELECT function_name FROM phpboost_comExt_function_list WHERE function_id = tes001",__LINE__,__FILE__); echo $row;
le soucis je crois c'est que je veux juste récupérer la config et la classe sql afin de profiter du multi-sgbd et de ne pas devoir refaire un fichier de config.
Maintenant sql prend-elle directement les infos de connexion dans un fichier de config ou alors les récupère-elle via l'application?
Encore une fois je ne lance pas l'application phpboost pour utiliser ce scrip, je crois que mon soucis viendrait de là non?
Montre moi tout ton code.
serveur.php
Code PHP :
la page qui appelle cette classe est start_server.php
Code PHP :
et cette page est lancée comme un script sur le serveur via la commande (qui lance le scipt start_server.php depuis une page web :
Code PHP :
j'ai éventuellement penser à sérialiser l'objet SQL via du xml (ce que je fais déjà pour une autre partie du projet).
Code PHP :
<?php class Server{ //##### Variables ##### var $address; var $port; var $sock; var $client; var $clients = array(); var $input; //##### Functions ##### //Démarage du serveur (fonction principale) function start_server($address,$port,$stop) { // création d'une socket vide $this->sock = socket_create(AF_INET, SOCK_STREAM, 0) or die ("Création de la socket ne fonctionne pas"); // on prépare la socket pour l'écoute. socket_bind ($this->sock, $address, $port) or die ("Binding marche pas \n"); //on prépare le serveur à l'écoute socket_listen($this->sock,SOMAXCONN) or die ("Listen fail"); //on lance la boucle infinie pour l'écoute. /* while (true) { */ //on attend une nouvelle connexion d'un client que l'on stocke dans $client $this->client = socket_accept($this->sock); //lecture du contenu de la socket et division de celle-ci dans un tableau. $in = $this->read_sock(); $this->input = explode('#|@',$in); if ($this->input[0] == $stop) { $this->server_stop(); } else { echo $this->input[0]; echo $this->input[1]; echo $this->input[2]; // echo 'le serveur stoppe depuis un message recu'; $function_path=$this->find_id($this->input[1]); include_once ($function_path['func_loc']); $function_path['func_name']($input[2]); $this->server_stop(); } /* } */ }//fin de la fonction du serveur. //fonction de lecture de la trame jusqu'au \0 function read_sock() //fonction ok { $string = ' '; while(true) { if (($c = socket_read($this->client,1)) == true ) { $string = $string.$c; } else {break;} } $len = strlen($string); $string= substr($string,0,($len-1)); return $string; } //fontion de fermeture du serveur. function server_stop() { echo 'le serveur stoppe depuis la fonction de stop'; socket_close($this->sock); die(); } //recherche de la fonction correspondant à l'id function find_id($id) { // include_once('../../kernel/framework/db/mysql.class.php'); include_once('../../kernel/begin.php'); // $Sql = new Sql(); global $Sql; //$row = $Sql->query_array("phpboost_comExt_function_list","function_name","function_location", "WHERE function_id = tes001 ",__LINE__, __FILE__); $row = $Sql->query ("SELECT function_name FROM phpboost_comExt_function_list WHERE function_id = tes001",__LINE__,__FILE__); echo $row; // $function_path[0] = $row['function_name']; // $function_path[1] = $row['function_location']; return $function_path; } }//fin de la classe ?>
la page qui appelle cette classe est start_server.php
Code PHP :
<?php include ('serveur.php'); include ('conf.php'); // Autorise l'exécution infinie du script, en attente de connexion. set_time_limit(0); $serv=new Server(); $serv->start_server($address,$port,$stop); ?>
et cette page est lancée comme un script sur le serveur via la commande (qui lance le scipt start_server.php depuis une page web :
Code PHP :
passthru("/usr/bin/php /home/jail/home/elearning/website/comExt/server/start_server.php >/dev/null & ") ;
j'ai éventuellement penser à sérialiser l'objet SQL via du xml (ce que je fais déjà pour une autre partie du projet).
Ta fonction :
Code PHP :
Ton start_server.php :
Code PHP :
Code PHP :
function find_id($id) { global $Sql; $row = $Sql->query("SELECT function_name FROM phpboost_comExt_function_list WHERE function_id = tes001",__LINE__,__FILE__); $function_path[0] = $row['function_name']; $function_path[1] = $row['function_location']; return $function_path; }
Ton start_server.php :
Code PHP :
J'avoue ne pas avoir penser à le faire là.
Merci
Merci
Met le sujet en réglé si c'est le cas et n'hésite pas à poster si tu as d'autres questions
c'est fait.
merci beaucoup
merci beaucoup
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie





PHPBoost

Support
Téléchargements
Développement
Communauté













