VPS参考、测评、推荐
分享你关注的VPS主机优惠信息

将WordPress服务器仪表板转换成小部件。

将WordPress服务器仪表板转换成小部件。

将WordPress服务器仪表板转换成小部件。

在上一篇文章中,我们创建了插件的基本结构。现在是时候为每个小部件实现呈现类了。

回想一下,所有小部件提供者都必须实现提供者接口。它们还必须位于名为Widgets的中,位于命名空间AXStatBoardWidget下。如果我们想添加一个新的指标,我们只需要创建一个相应的类,创建一个对象并使用add_provider方法将其添加到Widget类中。

情况小部件我们要显示的第一条信息是当前量和当前空闲的RAM量。

在这种情况下,free -m是我们的朋友-它告诉我们RAM的使用情况。m开关以兆字节为单位输出结果。

安装的软件我们将介绍的第二个小部件是显示已安装软件的小部件。这是一个小部件,旨在显示服务器上有常用软件包以及哪个版本。

例如,我们安装了NodeJS和Ruby吗?我们使用的是哪个版本的?等一下。

让我们用以下初始内容创建widget/software.:

磁盘使用现在我们将解决磁盘使用的问题。我们将把处理这个任务的类命名为Disk。我们先做基本骨架。

& lt?PHP namespace AX stat board Widget;class Disk实现提供程序{ function _ _ construct(){ }公共函数get _ title(){ return & quot;磁盘使用率& quot;像往常一样,我们必须实现提供者接口。我们在这里为小部件设置一个标题。接下来是我们课程的核心:获取磁盘使用情况的方法。

& lt?php函数get _ metric(){ $ df = ` df-h `;$df =爆炸(& quot n & quot,$ df);if(is _ array($ df)& amp;& ampcount($ df)& gt;= 2){ array _ shift($ df);//摆脱第一行$ df = array _ map(function($ line){ if(empty($ line)){ return NULL;} $ segment = preg _ split(‘/ s+/‘,$ line);返回数组(‘file system‘= & gt;$段

服务器信息这个小部件向我们显示信息:Linux内核、CPU架构、正常运行时间、IP地址。我们这里不需要图表。一个简单的数据表就可以完成这项工作。调用类是Server。这是widget/server.php

的第一个内容

处理器我们的处理器是我们可以展示的最重要的东西之一。我们想知道一个特定的进程使用了多少CPU和/或内存。我们调用我们的类Process,从get_title和get_metric开始。稍后我将在代码中解释关于get_metric的更多细节:

& lt?PHP namespace AX stat board Widget;类进程实现提供程序{ public function get _ title(){ return & quot;进程& quot;} /***返回服务器信息:操作系统、内核、正常运行时间和名* @返回带有3个度量的数组:* *名* *操作系统* *正常运行时间*/函数get _ metric(){ $ processes = array();$output = `ps -eo pcpu,pmem,pid,user,args,time,start | grep-v‘

平均负载Linux有一个命令可以显示CPU和IO在过去1分钟、5分钟和15分钟的平均负载。让我们将其压缩成一个小部件。将其命名为Cpuload并创建我们的小部件/cpuload.php。

& lt?PHP namespace AX stat board Widget;类Cpuload实现提供程序{ function _ _ construct(){ }公共函数get _ title(){ return & quot;CPU负载& quot;} function get _ metric(){ $ number _ of _ core = intval(`/bin/grep-c processor/proc/CPU info `);$ load avg = ` cat/proc/load avg |/usr/bin/awk“{ print $ 1,$2,$ 3 }‘`;$ load avg = explode(‘‘,$ load avg);if($ load avg & lt;3){返回false} $ load times = array(‘1分钟’‘5分钟’‘15分钟’);return array _ map(function($ load time,$value,$ number _ of _ core){ return array($ load time,round($ value * 100/$ number _ of _ core,2),$ value);},$loadTimes,$loadAvg,array _ fill(0,3,$ number _ of _ core);}}首先,我们通过读取/proc/cpuinfo来统计CPU核心的数量,并统计包含“处理器”一词的行数。我们在服务器信息中。

这是部分介绍。

在Linux中,/proc/loadavg存储平均负载信息。前三列分别是1分钟、5分钟和15分钟的负荷。这里使用Awk来过滤出我们需要的字段。~ cat/proc/load avg 0.01 0.04 0.05 1/217 16089 ~ cat/proc/load avg | awk“{ print $ 1,$2,$ 3 }”0.01 0.04 0.05将上述结果用空格分开,构造一个包含三个元素的数组。计算所有内核的平均负载。因此,为了得到结果,我们使用array_map循环来遍历$loadAvg数组,并将其除以我们拥有的内核数。请注意,我们创建了两个与$loadAvg长度相同的额外数组,一个用于保存密钥,另一个用于保存内核数量,以便将所有这些传递给array_map。

获取内容时间:

公共函数get _ content(){ $ metrics = $ this-& gt;get _ metric();如果(!$ metrics){ return false;} //有关格式$ Data = array(array(‘Duration‘,‘% Load‘)的更多详细信息,请参见https://-developers . spot . /chart/interactive/docs/gallery/barchart # Data _ Format;foreach($ metrics as $ key = & gt;$ metric){ array _ push($ data,array($ metric,,】这是图表呈现时的结果:

0], $metric[1] ) ); } $data = json_encode( $data ); echo EOD; }我们使用条形图并从数组创建一个数据数组,然后使用 json_encode 将其转换为与条形图数据格式匹配的 JavaScript 表示法数组。

例如:

[ ["Duration","% Load"], ["1 min"

以太网接口我们要处理的下一个小部件是以太网接口。一些服务器可以有多个以太网接口,并为它们分配不同的IP地址。

看到这些信息非常有用。我们把这个类称为以太坊,从widget/ethernet.php的基本内容开始。

& lt?php/** *采用自https://github./afaqurk/linux-dash/blob/master/sh/ip.php * */namespace AX stat board Widget;类以太网实现提供程序{ function _ _ construct(){ }公共函数get _ title(){ return & quot;以太网;}函数get _ metric(){ $ Ethernet = array();$ output = shell _ exec(& quot;ip -oneline链接显示| awk“{ print $ 2 }”| sed的//://“& quot;);如果(!$ output){//它不适用于& quotip&quot所以我们使用ifconfig $ output = shell _ exec(‘ifconfig |/bin/grep-B1 & quot;inet地址| /usr/bin/awk ““。“{ if(1美元= = & quotinet & quot){ print $ 2 }‘。‘else if(2 = = & quot;& quot){ printf & quot%s:&quot,$ 1 } } ‘|/usr/bin/awk‘。-F:‘{ print $ 1 & quot;,& quot$3 }” );$ output = trim(output,& quot n & quot);$ output = `ifconfig | grep & quot链接封装& quot| awk“{ print $ 1 }”`;$ interfaces = explode(& quot; n & quot,$ output);$ output = `ifconfiga | grep & quotinet地址| awk“{ print $ 2 }”| sed‘s/addr://‘`;$ addreses = explode(& quot; n & quot,$ output);$ output = trim(output,& quot n & quot);返回array _ combine($ interfaces,$ addreses);} $ output = trim($ output,& quot n & quot);$ interfaces = explode(& quot; n & quot,$ output);$ addreses = array();foreach($ interfaces as $ interface){ $ output = shell _ exec(& quot;IP-oneline-family inet addr show $ interface | awk“{ print $ 4 }”| cut-d“/“-f1 & quot;);$addreses

网络网络或网络IO显示通过计算机网络传输的数据包的状态。该信息提取自netstat。

输入/输出统计现在,我们处理io统计。IO代表输入/输出。我们将知道每秒执行多少读/写操作。我们还处理io_wait。IO wait是CPU空闲等待从硬盘读取结果的时间。

例如,如果您正在读取MySQL数据,CPU将处于空闲状态并等待结果。Io等待时间计算为1秒或1000毫秒。如果你的代码需要100毫秒从硬盘读取数据,io_wait就是100/1000 = 10%。IO等待越少,系统性能越好。

为了继续此操作,请确保sysstat包在系统上可用。

对于Arch Linux,请安装

:将WordPress服务器仪表板转换成小部件。 https://vps.caogenba.com.com/110887.html

赞(0) 打赏
未经允许不得转载:草根吧VPS_最新VPS信息参考 » 将WordPress服务器仪表板转换成小部件。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址