2015-12-29 2 views
1

Я пишу инструмент ping с помощью CakePHP 3. Код работает на моем сервере разработки, возвращая правильное состояние 0. Но на рабочем сервере он всегда показывает код состояния 2 вместо 0, независимо от того, действителен ли $ip.exec ('ping'), работающий на сервере разработки, но не в производстве

Это мой код:

public function testDomain(){ 
    if($this->request->is('post')){ 
     $ip = $this->request->data['domain']; 

     $starttime = microtime(true); 

     $stoptime = microtime(true); 
     $total_time = ($stoptime - $starttime) * 1000; 

     exec("ping -n 3 $ip", $output, $status); 
     print_r($status); 
     if (0 == $status) { 
      echo $mode = 'up'; 
      if($total_time <= '500'){ 
       $result = 'Very Fast'; 
      }else if($total_time <='1000'){ 
       $result = 'Fast'; 
      }else if($total_time <='1500'){ 
       $result ='Good'; 
      }else if($total_time <='2500'){ 
       $result ='Slow'; 
      }else if($total_time <='3000'){ 
       $result ='Very Slow'; 
      }else{ 
       $result ='down'; 
      } 
      echo $ip.' '.'is'.' '.$result; 
     }else{ 
      echo $mode = 'down'; 

     }   
    } 
    exit; 
} 

ответ

1

Ваша машина развития, вероятно, Windows, и ваш производственный сервер Linux.

Это то, что происходит, когда вы запускаете команду на Linux:

[email protected]:~$ ping -n 3 192.168.0.1 
connect: Invalid argument 

3 не является веским аргументом для ping.

Ваша команда в Linux Шоуда можно переписать в виде:

exec("ping -c 3 $ip", $output, $status); 
+0

спасибо сэр свою работу – Rishu