加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP监视linux服务器负载

发布时间:2022-01-15 17:49:49 所属栏目:PHP教程 来源:互联网
导读:由于Web Server以及PHP的实现方式所限,我们在现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此,我从网上找到另外一种方式来绕开这个限制。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序。 c程序 首先写个c文件,比
      由于Web Server以及PHP的实现方式所限,我们在现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此,我从网上找到另外一种方式来绕开这个限制。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序。
 
     c程序
     首先写个c文件,比如/usr/local/ismole/w.c
//note 由于wordpress编辑器的原因,请将此代码中头文件多余的空格去除
#include < stdio.h>
#include < stdlib.h>
#include < systypes.h>
#include < unistd.h>
 
int main()
{
    uid_t uid ,euid;
 
    //note 获得当前的uid
    uid = getuid();
    //note 获得当前euid
    euid = geteuid();
 
    //note 交换这两个id
    if(setreuid(euid, uid))
        perror("setreuid");
 
    //note 执行将要执行linux系统命令
    system("/usr/bin/w");
    return 0;
}  
    编译该文件gcc -o ipt -Wall w.c,这时会在当前目录下生成程序w。
    改变此程序的属主chmod u+s ./w。
 
 
    PHP执行
    文件内容如下,放在web目录下,访问就会输出当前的服务器负载情况。
<?php
/*
        More & Original PHP Framwork
        Copyright (c) 2007 - 2008 IsMole Inc.
 
        $Id: serverMonitor.php 408 2008-12-02 08:07:40Z kimi $
*/
 
//note key的验证过程
if($key != $authkey) {
//        exit('key error);
}
 
$last_line = exec('/usr/local/ismole/w', $retval);
 
$returnArray = explode("load average: ", $retval[0]);
$returnString = $returnArray[1];
 
echo $returnString;
?>
    按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控,备份,恢复,日常维护等等。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读