Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 测量服务器正常运行时间_Php_Linux_Cron_Uptime - Fatal编程技术网

Php 测量服务器正常运行时间

Php 测量服务器正常运行时间,php,linux,cron,uptime,Php,Linux,Cron,Uptime,我正在创建一个游戏服务器列表,我想测量特定服务器的正常运行时间(具体来说,正常运行时间应该以百分比显示) 我已经为我的脚本配置了一个cronjob,它每5分钟检查一次服务器是否正常运行,这样我就可以轻松地获取服务器状态 我需要一个关于如何根据上述数据测量每个服务器正常运行时间的想法。脚本每执行一分钟,我就必须为每台服务器节省上下时间?你说的是Apache服务器还是整个计算机服务器?如果您只监视Apache: 如果您想监视整个系统,cronjobs可能有点徒劳,因为如果主机操作系统关闭,它们

我正在创建一个游戏服务器列表,我想测量特定服务器的正常运行时间(具体来说,正常运行时间应该以百分比显示)

我已经为我的脚本配置了一个cronjob,它每5分钟检查一次服务器是否正常运行,这样我就可以轻松地获取服务器状态


我需要一个关于如何根据上述数据测量每个服务器正常运行时间的想法。脚本每执行一分钟,我就必须为每台服务器节省上下时间?

你说的是Apache服务器还是整个计算机服务器?如果您只监视Apache:


如果您想监视整个系统,cronjobs可能有点徒劳,因为如果主机操作系统关闭,它们将无法运行。在这种情况下,服务器日志应该包含您需要的所有信息

你的问题还不清楚。如果你想获得远程服务器正常运行时间统计数据,SSH是一个选项。在一台服务器上安排cron脚本,该脚本将远程检查其他服务器的正常运行时间。

如果你不关心很多细节,而只需要启动和关闭时间。然后,您可以在一个文件中保存两个数字,一个是当前百分比,另一个是脚本采取的当前度量数

例如:“96800”

然后,每当执行脚本时,使用此公式,假设百分比(96)为X,保存次数为Y(800),当前度量值为Z(0或1)

当然,这只是伪代码,不会马上起作用,只是给你一个方法的想法。您还必须包括一种读取文件并将其保存到包含这两个数字的页面的任何位置的方法

正如Jamie所说的,这是假设crontime在服务器关闭的情况下仍然工作

另外,您也可以从其他服务器添加一个系统来检查此服务器的正常运行时间,但需要进行统计计算(当添加许多其他服务器时,误差往往为0,但这太困难了),因为您还需要考虑其他服务器的正常运行时间…

如果您的“游戏服务器”在实际的unix或linux虚拟机上运行时,最好测量实际的服务器正常运行时间

在类Unix操作系统中,有一个名为
uptime
的命令:

[ghoti@pc ~]$ uptime
 6:37PM  up 10 days,  1:26, 52 users, load averages: 0.26, 0.35, 0.34
[ghoti@pc ~]$ 
如果您能够从PHP执行shell命令,那么您可以将此输出捕获到PHP中的一个变量,并对其进行解析以确定实际的服务器正常运行时间。在任何你喜欢的地方记录下来,但是最喜欢的方法之一是使用图表。RRD是数据库格式,然后您可以使用或之类的工具来构建图形。可能比正常运行时间更有趣


另一方面,如果您还希望能够在服务器脱机时自动通知用户,并且希望能够灵活地监视任何类型的服务(HTTP、SMTP、虚拟服务器等),那么可以查看诸如或之类的工具。

您可以解析
/proc/uptime
文件。它是Linux上的文本文件(您应该按顺序读取),提供服务器机器的正常运行时间:

   % cat /proc/uptime 
   129657.69 506917.57
更多详细信息请参见手册页


PS.读取
/proc/
文件系统(带有伪文件)时不涉及实际磁盘IO。所以阅读它真的很快。

然后,根据你的公式,服务器正常运行时间在离线时会减少,在线时会增加,对吗?没错。如果Z=0,它会这样做(对于给定的示例)X=0.96*800/801,这实际上减少了正常运行时间,即800/801
   % cat /proc/uptime 
   129657.69 506917.57