fread stream_get_contents fonctionne pas dans ma class

fread stream_get_contents fonctionne pas dans ma class - PHP - Programmation

Marsh Posté le 02-08-2008 à 15:53:32    

Bonjour, voila 1 jour que je bloque j'ai tout essayé, dans une classe j'ai une fonction qui envoie des commandes et lis un resultat:

 
Code :
  1. private function sendcmd($cmd, $answer = false) {
  2.  if (!$fp = stream_socket_client('udp://' . $this->ip . ':' . $this->port, $errno, $errstr, 3)) {
  3.   $this->status($this->lang['errcmd'] . ' ' . $cmd . ' ' . $errstr . ' (' . $errno . ')');
  4.  } else {
  5.   socket_set_timeout($fp, 3);
  6.   fwrite($fp, "\xff\xff\xff\xff\x02rcon $this->rconpass $cmd\x0a\x00" );
  7.   //if ($answer)
  8.   $response = fread($fp, 8192);
  9.   //debug
  10.   echo $response;
  11.   //----
  12.   fclose($fp);
  13.   if ($answer) return str_replace("\xff\xff\xff\xffprint\n", '', $response);
  14.  }
  15. }
 

cela retourne rien, echo $response affiche rien, mais la commande est bien passé et sa attend 3sec (jusqu'au timeout je suppose)
en revanche dans un .php vierge, ceci:

 
Code :
  1. if (!$fp = stream_socket_client('udp://127.0.0.1:2560', $errno, $errstr, 3)) {
  2.   echo'zzzzz';
  3.  } else {
  4.   socket_set_timeout($fp, 3);
  5.   fputs($fp, "\xff\xff\xff\xff\x02get ryvs status\x0a\x00" );
  6.   $response = fread($fp, 8192);
  7.   fclose($fp);
  8.   echo $response;
  9.  }
 

la commande passe et j'ai la réponse instantanément echo $response affiche le bon texte que le serveur envoie.

 

c'est pas la 1er fois que j'emploie ce code avec succès et la non, je comprend pas, pas d'erreur affiché non plus.

 

quelqu'un à une idée?

 

Merci d'avance


Message édité par ouiouioui10 le 02-08-2008 à 16:01:37
Reply

Marsh Posté le 02-08-2008 à 15:53:32   

Reply

Marsh Posté le 03-08-2008 à 18:48:14    

j'ai résolu le problème en isolant cette fonction dans un .php vierge et en l'appelant depuis ma classe avec shell_exec('monphp.php "argument"');

 

c'est pas propre et surtout j'aime pas ne pas comprendre. donc si une âme charitable pouvait m'aider je lui en serait très reconnaissant :(


Message édité par ouiouioui10 le 03-08-2008 à 18:49:15
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed