[PHP-users 32558] Re: Pear の Net_Ping について
富士通)小野
ono.1982.kenji @ jp.fujitsu.com
2007年 8月 23日 (木) 20:39:47 JST
こさきさん今日は。
小野です。
色々、テストしてみました。
> まさかvar_dump($ping->ping(監視先IPアドレス));というコードではな
> いとは思いますが、var_dump($ping->ping("127.0.0.1")); で実行して
> も同じ状況でしょうか。(cliでも)
以下のようにIPアドレスを直接記述したら、あっと言う間に帰ってき
ました。
$ping = Net_Ping::factory();
if (PEAR::isError($ping)) {
echo $ping->getMessage();
} else {
$wrtcode = $ping->setArgs(array("count" => 1 ,
"size" => 32, "TTL" => 32, "timeout" => 5));
var_dump($ping->ping("127.0.0.1");
var_dump($ping->ping("192.168.1.1");
var_dump($ping->ping("192.168.1.2");
}
=====>
それをIPを外部アドレスにして読み込んだ内容をpingメソッドに渡すと
戻ってこなくなりました。
$fp = fopen ("./conf/datafile.txt", "r");
while (!feof ($fp)) {
$buffer = fgets($fp, 4096);
//
$ping = Net_Ping::factory();
if (PEAR::isError($ping)) {
echo $ping->getMessage();
} else {
$wrtcode = $ping->setArgs(array("count" => 1 ,
"size" => 32, "TTL" => 32, "timeout" => 5));
var_dump($ping->ping($buffer); <= ★fgetsの戻り値をそのまま
}
}
IPアドレスリストファイルはWindows上で作成し、BinaryモードでFTPで
サーバへ転送しています。
よって、ファイルの転送方法か、fgets の戻り値をそのまま渡すのがま
ずいんでしょうかね。
なんか、敗因は fopen, fgets, の方式がだめなのかな、と言う気がし
てきました。
=====>戻ってこないときの snoop icmp の結果
# ps -ef | gerp ping
usr1 26088 26086 0 19:20:21 ? 0:00 /usr/sbin/ping -s SV2
usr2 26086 22903 0 19:20:21 ? 0:00 sh -c /usr/sbin/ping -s SV2 32 1
bash-2.05# snoop icmp
Using device /dev/eri (promiscuous mode)
SV1 -> SV2 ICMP Echo request (ID: 26088 Sequence number: 120)
SV2 -> SV1 ICMP Echo reply (ID: 26088 Sequence number: 120)
SV1 -> SV2 ICMP Echo request (ID: 26088 Sequence number: 121)
SV2 -> SV1 ICMP Echo reply (ID: 26088 Sequence number: 121)
: 永遠と続きます。
PHP-users メーリングリストの案内