PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 16/11/2010 09:42:17

TTinvent
Membre

Recupere les commandes psql dans un programme!

Bonjiur,
J'aimerais savoir si quelqu'un a deja fait la prog-systeme en PHP et recupere les commandes comme createdb ou dropdb ou /etc/init.d/postgresql restart ou encore psql-l dans un programme pour etre afficher dans un navigateur par exemple.Merci

Hors ligne

#2 16/11/2010 09:49:44

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

Vraisemblablement. J'imagine que c'est comme ça que fonctionne PHPPgAdmin


Marc.

Hors ligne

#3 16/11/2010 09:59:08

gleu
Administrateur

Re : Recupere les commandes psql dans un programme!

ppa n'utilise pas directement createdb ou dropdb, il utilise les commandes SQL (CREATE DATABASE et DROP DATABASE).


Guillaume.

Hors ligne

#4 16/11/2010 10:24:56

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

Et il ne fait pas de pg_dump ?


Marc.

Hors ligne

#5 16/11/2010 10:51:47

gleu
Administrateur

Re : Recupere les commandes psql dans un programme!

Si, car cette commande n'a pas un équivalent simple SQL. Pareil pour pg_restore. D'ailleurs, pgAdmin le fait de la même façon.


Guillaume.

Hors ligne

#6 16/11/2010 11:01:46

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

D'où mon message smile

Dès qu'un programme propose la fonction d'export, c'est qu'il fait ce genre de manipulations


Marc.

Hors ligne

#7 16/11/2010 13:45:40

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

En fait j'ai fait un projet avec pgpool-II c'est a dire de pooling de connexions,de la replication et de la repartition des charges et j'ai suivi votre article sur dalibo.org et tout s'est passe bien et maintenant, je voudrai interagir tous ce que j'ai fait avec une page web PHP.C'est pour ca que j'ai poste ce message mais certainement pas phphpgadmin.
Merci

Hors ligne

#8 16/11/2010 14:36:41

gleu
Administrateur

Re : Recupere les commandes psql dans un programme!

Faudrait donner plus de détails, je ne vois pas trop ce qu'on pourrait vous dire sinon.


Guillaume.

Hors ligne

#9 16/11/2010 15:32:17

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

Je veux dire que je voudrais realiser des pages PHP qui possede des liens comme 'demarrer pgpool' et derriere il fait /opt/pgpool-II-2.2/bin./pgpool -n, 'utiliser la replication' et derriere il y a le programme qui va faire 'createdb -p 5432 baserepli', de la prgrammation systeme quoi?j'ai essaye avec les fonctions system(), exec(), shell_exec() mais je sai pas encore comment recuperer les resultats.
Merci

Hors ligne

#10 16/11/2010 15:39:16

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

system ne permet pas de récupérer le texte retourné par le programme, seulement son code retour.

Ce qui vous intéresse, c'est exec.

http://www.php.net/manual/fr/function.exec.php

La sortie ira dans le tableau «output», dont la référence est passée en paramètre.

Dernière modification par Marc Cousin (16/11/2010 15:39:44)


Marc.

Hors ligne

#11 16/11/2010 16:07:30

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

Oui, c'est dans ce document que j'ai essaye system(),exec() ou shell_exec() mais il n'affiche rien, seulle retval qui est un int qu'il retourne 1.avec shel_exec il retourne directement le resultat de la commande mais comme je vous le dit : 'ls', 'whoami','pwd' ces commandes de bases unix qui marche avec mais auand je fais /etc/init.d/postgresql start, normalement il doit repondre que postgres est deja lance mail dans mon navigateur, il affiche rien.Je sais pas si quelqu'un a deja essaye comme exec('createdb -p 5432 base',$output,$retval);

Hors ligne

#12 16/11/2010 16:23:33

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

Ça marche parfaitement avec exec… Ce code fonctionne.

<?php                                                                                                                                                                                                                                                 
exec('ls',$out);                                                                                                                                                                                                                                     
foreach ($out as $ligne)                                                                                                                                                                                                                             
{                                                                                                                                                                                                                                                     
        print "$ligne\n";                                                                                                                                                                                                                             
}                                                                                                                                                                                                                                                     
?>   

Toutefois, c'est un forum PostgreSQL, pas PHP. Vous auriez certainement une aide plus appropriée sur un forum PHP.


Marc.

Hors ligne

#13 16/11/2010 16:40:57

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

oui, je vous ai dit que ca marche avec ls et tous les disons simple commande unix mais si je poste cette question sur un forum de postgres c'est que je voudrai faire de la progsys qui n'utilse comme commandes que des fonctions postgres comme createdb ou psql -l dans une fonction PHP et ca marche pas encore!

Hors ligne

#14 16/11/2010 16:55:55

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

Donc vous êtes en train de me dire que si vous mettez comme exécutable "ls", ça marche, mais pas avec "psql -l" ?

Si c'est le cas, vous avez un problème dans votre environnement (psql pas dans le path, par exemple)


Marc.

Hors ligne

#15 16/11/2010 17:19:16

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

Je sais pas mais j'ai deja essaie sur deux machines distinctes mais toujours le meme probleme.J'ai l'impression que peut-etre ces commandes la elles ont besoin qu'on soit root pour qu'il s'execute, j'en sais rien mais peut-etre quelquechose comme ca.ERn tout cas merci, je vai encore continuer a chercher.

Hors ligne

#16 16/11/2010 17:35:14

Marc Cousin
Membre

Re : Recupere les commandes psql dans un programme!

Non, ces deux commandes n'ont pas besoin d'être root.

Pour savoir pourquoi la commande échoue, essayez d'afficher $errno et $errstr, qui contiendront l'erreur système associée…


Marc.

Hors ligne

#17 17/11/2010 00:21:01

gleu
Administrateur

Re : Recupere les commandes psql dans un programme!

Il est possible que la commande demande la saisie d'un mot de passe pour la connexion au serveur de bases de données. Pensez à créer le fichier .pgpass dans ce cas (pour l'utilisateur apache, vu que c'est lui qui exécute le script et qui donc demande la connexion à la base de données).


Guillaume.

Hors ligne

#18 18/11/2010 08:41:14

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

Je crois pas parceque /etc/init.d/postgresql start n'a pas besoin de mot de passe et cette commande aussi si ca marche avec exec(), il doit afficher au navigateur que server deja demarre ou message du genre pid deja utilise mais quand je lance cela, il affiche rien.

Hors ligne

#19 18/11/2010 09:46:07

gleu
Administrateur

Re : Recupere les commandes psql dans un programme!

/etc/init.d/postgresql et psql sont deux commandes différentes et si l'une ne demande pas de mot de passe, l'autre peut très bien le faire.

Mais vu ton message, je ne crois pas que j'ai bien compris ton problème. Il serait intéressant que tu expliques réellement ton soucis.


Guillaume.

Hors ligne

#20 18/11/2010 15:14:38

TTinvent
Membre

Re : Recupere les commandes psql dans un programme!

Voila, je reexplique alors : j'ai configure pgpool-II pour faire de pooling de connexions ensuite de la replication et enfin la repartition des charges et ben tout cela ca marche tres bien, et maintenant je voudrais relier tous les config de pgpool-II a une application PHP qui va faire donc par exemple : un lien pour demarrer pgpool, un lien qui se sert pour demontrer l'utilisation de la replication et un lien qui va simuler la repartition des charges avec pgbench comme vous l'avez explique dans l'article. Et pour realiser l'application j'ai utilise le manuel de PHP et il explique qu'on peut recuperer les commandes shell dans des fonctions PHP comme en C telles que system(), exec(), shell_exec() et le manuel il fait comme exemple  : <? $last_line=system('ls /home/',$retval);?>
et quand j'ai essaye ca marche comme il l'explique, de meme avec exec('whoami') et ca marche et apres j'ai essaye exec('/etc/init.d/postresql-8.3 start')et j'ai pense que ca va marche parceque je recupere une commade et quand je reactualise le navigateur,oups il affiche rien, normalement comme mon postgres demarre avec le systeme, il doit afficher une erreur du genre : server deja demarre ou pid deja utilise mais rien ne s'affiche, de meme avec exec('su postgres'), il retourne rien, avec system('psql -l ) ou exec('psql -l') il affiche toujours rien.et c'est a ce moment la que j'qi poste mon probleme ici.
Merci

Hors ligne

Pied de page des forums