Fork avec exec en php

ViPHP
ViPHP | 1380 Messages

19 juin 2006, 09:44

Vérifie les chemins de fichiers. Tout part du document_root.
$fichier='testfork.php';
Va voir dans ton access.log apache si le GET de testfork.php a été reçu et quelle a été la réponse du serveur.
ripat

Eléphanteau du PHP | 19 Messages

19 juin 2006, 09:59

En effet :
ERREUR APACHE :
[Mon Jun 19 09:56:20 2006] [error] [client 127.0.0.1] request failed: erroneous characters after protocol string: GET /____FORK/testfork.php HTTP /1.1

ACCESS.log
127.0.0.1 - - [19/Jun/2006:09:56:20 +0200] "GET /____FORK/0.php HTTP/1.1" 200 79
127.0.0.1 - - [19/Jun/2006:09:56:20 +0200] "GET /____FORK/testfork.php HTTP /1.1" 400 402

J'essaye de voir ce que je peux faire ...

Eléphanteau du PHP | 19 Messages

19 juin 2006, 10:58

Bon, je n'y arrive vraiment pas ](*,)

Mes fichiers sur le serveur sont placés dans :
/var/www/vhosts/mon_nom_de_domaine/httpdocs/exec

Le dossier où est installé php est :
/usr/bin/php

:?: :?: :?: :?: :?:

ViPHP
ViPHP | 1380 Messages

19 juin 2006, 11:09

Le script que tu as donné plus haut fonctionne sans problème chez moi sur un serveur linux et apache 2.0.

Essaye peut-être sans le User-Agent.

Les fonctions exec() sont-elles disponibles sur le serveur qui sera en production? Quel OS sur celui-ci.
ripat

Eléphanteau du PHP | 19 Messages

19 juin 2006, 11:45

C'est bon !!!!!
J'ai enfin réussi !!!!

Tout était dans l'exec :

il me fallait : exec("/usr/bin/php monfichier.php > /dev/zero &");

j'avais des messages d'erreurs qui s'affichaient quand j'exécutais mon fichier.php sous le shell ... j'avais vu qu'il fallait un "> /dev/null" pour palier à ce problème ... mais ça ne fonctionnait pas ... j'ai fait par hasard un "man dev null" sur le shell, qui m'a sorti une autre possibilité : "> /dev/zero". J'ai bien évidemment rajouté un & à la fin pour le mettre en background et magie !!!!!!

Merci Ripat pour tes informations supplémentaires ... j'ai pas encore réussit à utiliser les sockets, mais bon, exec lui est actif, autant en profiter !!!!
Je peux donc afficher une page.php qui fait un exec sur une page2.php contenant un sleep(1000); et donc ma page.php est entièrement affichée sans avoir besoin d'attendre que le sleep se finisse !!!!


PROBLEME RESOLU


:pouce:

ViPHP
ViPHP | 1380 Messages

19 juin 2006, 12:22

Bravo.

Attention cependant à l'exécution, en cli, d'un script PHP. Les modules qui ne sont pas compilés en dur mais chargés dynamiquement risquent de ne pas passer. C'est la raison de l'erreur que tu as postée plus haut.

Solution: voir man php option -c (pour charger un php.ini)
ripat