用php實現ping命令,測試速度,但是exec()函數用不了。

來源:互聯網
上載者:User

測試程式:

exec("ping baidu.com",  $list);
for ($i=0;$i < count($list);$i++)  {  
      print  $list[$i]."\n";  
}
?>

中文資料:
這個函數一般只用於linux

很少有人把php放在windows伺服器上面來啟動並執行,php裡面有些函數是只支援linux的.不是所有的都可以在windows上面用的!

exec可以用在win上面
在IIS+PHP下運行exec   首先要給php讀cmd.exe的許可權(就是要給cmd.exe   安全裡面添加上   internet來賓使用者權限)   不然會出錯
apache下不知道是以什麼許可權啟動並執行   不知道會不會也是許可權的問題

E文資料:
It's because your host has limited certain functions of PHP.

exec is a PHP-specific function that your web host disabled with PHP safe mode

看來在windows下面有很多許可權問題不那麼好解決,那要在xp下面運行還有別的方法嗎?
問了許多朋友,終於找到了下面兩個函數。fsockopen 和 fopen ,不過這兩個函數都有局限性。
fopen的話,如果失去連結,頁面就會一直卡住不動,沒有逾時的參數,不好控制。
fsockopen要求的url是網域名稱,但是我資料庫裡面的好多資料都是ip,比如http://202,234.34.54,判斷就失誤了。 (我最後選用了這個方法)
在網上找了個提取網域名稱的函數,但是都找不到提取包括www函數,唉,想偷懶都不行,無奈,自己寫了一個function get_domain($url){
  $url1 = $url;
  $upos = strpos($url1, "http://");
  if($upos==0) $url1 = str_replace("http://", "", $url1);
  $upos = strpos($url1, "/");
  
  if($upos){
    $url2 = substr($url1,0,$upos);
  }
  return $url2;
}// end function

下面是測試代碼:
function test($testurl){
  $fp = @fsockopen($testurl, 80, &$errno, &$errstr, 2);
  if(gettype($fp)!=resource){
    $remark="網址連結失效!";  
  }
}

此函數的詳細介紹在網上有很多,需要的朋友自己搜下咯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.