程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP監控linux服務器負載

PHP監控linux服務器負載

編輯:PHP綜合
 由於Web Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root權限才能執行的程序,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程序中轉調用系統命令,然後用PHP去執行此c程序。

  c程序

  首先寫個c文件,比如/usr/local/ismole/w.c

 

  1. //note 由於Wordpress編輯器的原因,請將此代碼中頭文件多余的空格去除  
  2. #include < stdio.h>  
  3. #include < stdlib.h>  
  4. #include < systypes.h>  
  5. #include < unistd.h>  
  6.  
  7. int main()  
  8. {  
  9.     uid_t uid ,euid;  
  10.  
  11.     //note 獲得當前的uid  
  12.     uid = getuid();  
  13.     //note 獲得當前euid  
  14.     euid = geteuid();  
  15.  
  16.     //note 交換這兩個id  
  17.     if(setreuid(euid, uid))  
  18.         perror("setreuid");  
  19.  
  20.     //note 執行將要執行Linux系統命令  
  21.     system("/usr/bin/w");  
  22.     return 0;  
  23. }  

  //note 由於Wordpress編輯器的原因,請將此代碼中頭文件多余的空格去除

  編譯該文件gcc -o ipt -Wall w.c,這時會在當前目錄下生成程序w。

  改變此程序的屬主chmod u+s ./w。

  PHP執行

  文件內容如下,放在web目錄下,訪問就會輸出當前的服務器負載情況。

 

  1. < ?PHP  
  2. //note key的驗證過程  
  3. if($key != $authkey) {  
  4. //        exit('key error);  
  5. }  
  6.  
  7. $last_line = exec('/usr/local/ismole/w', $retval);  
  8.  
  9. $returnArray = explode("load average: ", $retval[0]);  
  10. $returnString = $returnArray[1];  
  11.  
  12. echo $returnString;  

  按照上面的實例,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,服務器監控,備份,恢復,日常維護等等。比如《利用SVN搭建測試服務器》

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved