最近在做一個應用,我使用socket收集伺服器的線上人數然後更新rrd資料庫,但是最後都沒顯示出來,有哪位前輩有相關經驗請指教,老闆一直在催啊;
代碼如下:
$ss = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($ss,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) ); socket_set_option($ss,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>3, "usec"=>0 ) );//$latencyStart = microtime(true); //延遲開始計時。 if(socket_connect($ss,gethostbyname($tietu_host),$tietu_port))//更新且串連成功 { socket_write($ss,"\xfe\x01"); $data=explode("\x00",mb_convert_encoding(substr(socket_read($ss,1024),9), 'auto', 'UCS-2')); $tietu_players=$data[3]; if(rrd_update($dbname,"N:$tietu_players")==true){ echo"資料更新成功,資料為".$tietu_players; }else{ echo"資料更新失敗"; } }
回複內容:
最近在做一個應用,我使用socket收集伺服器的線上人數然後更新rrd資料庫,但是最後都沒顯示出來,有哪位前輩有相關經驗請指教,老闆一直在催啊;
代碼如下:
$ss = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($ss,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) ); socket_set_option($ss,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>3, "usec"=>0 ) );//$latencyStart = microtime(true); //延遲開始計時。 if(socket_connect($ss,gethostbyname($tietu_host),$tietu_port))//更新且串連成功 { socket_write($ss,"\xfe\x01"); $data=explode("\x00",mb_convert_encoding(substr(socket_read($ss,1024),9), 'auto', 'UCS-2')); $tietu_players=$data[3]; if(rrd_update($dbname,"N:$tietu_players")==true){ echo"資料更新成功,資料為".$tietu_players; }else{ echo"資料更新失敗"; } }