gpt4 book ai didi

PHP恐惧问题

转载 作者:可可西里 更新时间:2023-11-01 00:17:27 25 4
gpt4 key购买 nike

我在工作中创建 PHP telnet 脚本以收集网络数据时遇到了问题。

因为从“Action: Status”命令返回的数据量可以是任意大小...我担心在第 13 行将静态数字与 fread() 一起使用。我也尝试过使用 fgets(),但是它只获取第一行数据(META HTTP 行......没有表格)。如何使用 PHP 从套接字中获取任意数量的数据?请帮忙

<?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;
}
}
}

?>

最佳答案

while (strlen($c = fread($fp, 1024)) > 0) {
$record .= $c;
}

编辑:您的应用程序挂起是因为它没有关闭连接来表示 HTTP 请求的结束。尝试

fwrite($ami, "Action: Status\r\n\r\n"); 
fwrite($ami, "Connection: Close\r\n\r\n");

关于PHP恐惧问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com