2010-05-12 7 views
2

J'ai un appel exec() qui ne se termine jamais, et mon processus Apache/PHP est bloqué jusqu'au timeout. Il est une charge de base de données PostgreSQL comme

"C:\Program Files\PostgreSQL\8.3\bin"\psql --host 127.0.0.1 --dbname unitTests --file C:\ZendStd\www\voo4\trunk\resources\sql\base_test_projectx.pg.sql --username postgres 2>&1 

Il marche très bien dans la ligne de commande, mais bloc juste lorsqu'il est appelé par la fonction php exec(). Je veux juste comprendre pourquoi mon appel exec() ne se termine jamais, je pense que psql demande un mot de passe mais comment puis-je imprimer la sortie avant la fin de l'appel? J'utilise PHP 5.2.12 sur Windows XP, avec PGSql 8.3.

+0

Cela me semble être un problème environnemental. Pouvez-vous dire si cela fonctionne? Est-ce que cela commence vraiment et ne finit jamais, ou ne commence-t-il jamais? Pouvez-vous regarder dans la base de données pour voir si vous avez fait une connexion? – MJB

+0

Il n'y a pas de connexion, mais la commande commence à s'exécuter. Avec une autre commande j'ai la sortie, je veux juste analyser le problème de cette commande. –

Répondre

2

Vous pouvez utiliser passthru() qui génère directement tout. Ou vous utilisez certaines fonctions de contrôle de processus.