Обмен информацией между серверами на PHP
Задача: получить данные с сервера, без использования apache
Решение: воспользуемся сокетами на php, а точнее поднимем свой «веб сервер», единственной функцией которго, будет на любой запрос отвечать требуемыми нам данными
Код сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/usr/local/bin/php <?php function GetCurrentTraf($ent){ $current_speed = `/usr/bin/netstat -nbI $ent | grep 'Link' | awk '{print $8}'`; $current_speed=rtrim($current_speed); return $current_speed; }; $socket = stream_socket_server("tcp://0.0.0.0:800", $errno, $errstr); if (!$socket) { die("$errstr ($errno)\n"); } while ($connect = stream_socket_accept($socket, -1)) { $current_traf = GetCurrentTraf("iя0"); $current_time = time(); $json_data = array ('speed'=>$current_traf,'time'=>$current_time); $jsonen=json_encode($json_data); fwrite($connect, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n $jsonen"); fclose($connect); } fclose($socket); |
Код клиента:
1 2 3 4 |
$json = file_get_contents($external_traff_url); $obj=json_decode($json); $current_speed=$obj->speed; echo "--текущий трафик на интерфейсе : $current_speed (внешний)\n"; |