ive a rencontré un problème lors de la création d'un script telnet PHP au travail pour collecter des données réseau. Comme la quantité de données renvoyées par la commande 'Action: Status' peut être de n'importe quelle taille ... im préoccupé par l'utilisation d'un nombre statique avec fread() sur la ligne 13. J'ai également essayé d'utiliser fgets() à la place mais il n'atteint que la première ligne de données (la ligne META HTTP ... sans la table). comment puis-je saisir une quantité arbitraire de données de la socket en utilisant PHP? s'il vous plaît aiderProblème PHP fread
<?php
$ami = fsockopen("192.100.100.180", 5038, $errno, $errstr);
if (!$ami) {
echo "ERROR: $errno - $errstr<br />\n";
} else {
fwrite($ami, "Action: Login\r\nUsername: 1005\r\nSecret: password\r\nEvents: off\r\n\r\n");
fwrite($ami, "Action: Status\r\n\r\n");
sleep(1);
$record = fread($ami,9999);#this line could over run!!!
$record = explode("\r\n", $record);
echo "<META HTTP-EQUIV=Refresh CONTENT=\"9\">"; #refresh page every 9 seconds
echo "<table border=\"1\">";
foreach($record as $value){
if(!strlen(stristr($value,'Asterisk'))>0
&& !strlen(stristr($value,'Response'))>0
&& !strlen(stristr($value,'Message'))>0
&& !strlen(stristr($value,'Event'))>0
&& strlen(strpos($value,' '))>0) #remove blank lines
php_table($value);;
}
echo "</table>";
fclose($ami);
}
function php_table($value){
$row1 = true;
$value = explode(" ", $value);
foreach($value as $field){
if($row1){
echo "<tr><td>".$field."</td>";
$row1 = false;
}
else{
echo "<td>".$field."</td></tr>";
$row1 = true;
}
}
}
?>
http://stackoverflow.com/questions/1405457/php-soap-fread-dynamic-post-size avait un problème similaire, cela pourrait aider –
merci phill, j'ai essayé de tester avec les en-têtes, mais le problème a finalement lié à quitter la session ouverte – JB87