posix_times

(PHP 4, PHP 5, PHP 7, PHP 8)

posix_times获取进程时间

描述

posix_times(): array|false

获取有关当前 CPU 使用情况的信息。

参数

此函数没有参数。

返回值

返回一个包含有关当前进程 CPU 使用情况信息的字符串哈希。哈希的索引是

  • ticks - 自上次重启后经过的时钟滴答数。
  • utime - 当前进程使用的用户时间。
  • stime - 当前进程使用的系统时间。
  • cutime - 当前进程及其子进程使用的用户时间。
  • cstime - 当前进程及其子进程使用的系统时间。
如果失败,则函数返回 false

范例

范例 #1 posix_times() 的使用范例

<?php

$times
= posix_times();

print_r($times);
?>

上面的例子将输出类似于以下内容

Array
(
    [ticks] => 25814410
    [utime] => 1
    [stime] => 1
    [cutime] => 0
    [cstime] => 0
)

注释

警告

此函数不可靠,对于长时间运行的程序可能会返回负值。

添加注释

用户贡献的注释 4 notes

2
murphy at nmc-online dot co dot uk
21 年前
我不确定为什么,可能是我的问题,但在我使用 FreeBSD 系统时
$time = posix_times();
$time['ticks'] 是一个巨大的值,与系统启动时间毫无关系(我通过重启系统进行了测试,该数字没有变化)。
我检查了我的时间计数器,它们每 10.000 毫秒滴答一次,我对返回的值进行了计算,结果表明机器已经运行了 200 多天 - 它大约在一周前重新格式化了。
这可能是 FreeBSD 或者 *BSD 的问题,或者只是像我一样的 *傻瓜,但在使用此函数之前请检查一下。
~
FreeBSD 5.1-R,Apache 2.0.46,PHP4.3.2
1
brain at winbot dot co dot uk
20 年前
在 FreeBSD 上不起作用。如上所述,时钟滴答间隔在不同的平台上不同。

对于系统启动时间,请考虑使用管道将 uptime 命令或类似命令传递,具体取决于性能是否是一个问题。
0
not_rich_yet at hotmail dot com
21 年前
如果你想让输出“语法正确”,请尝试以下代码。例如,它会将“1 分钟”打印为“1 分钟”,而不是“1 分钟”,天和小时也是如此。

将以下代码放在页面代码的头部

<?php
function uptime() {
if (!
$times = posix_times() ) {
return (
"unknown");
} else {
$now = $times['ticks'];
$days = intval($now / (60*60*24*100));
$remainder = $now % (60*60*24*100);
$hours = intval($remainder / (60*60*100));
$remainder = $remainder % (60*60*100);
$minutes = intval($remainder / (60*100));
if (
$days == 1) {$writeDays = "day";} else {$writeDays = "days";}
if (
$hours == 1) {$writeHours = "hour"; } else {$writeHours = "hours";}
if (
$minutes == 1) {$writeMins = "minute";} else {$writeMins = "minutes";}
return (
"$days $writeDays, $hours $writeHours, $minutes $writeMins");
}
}
?>

然后将这段代码放在你想显示信息的地方

<?php
print uptime();
?>

此致,

nry
0
rossz+php at vamos-wentworth dot org
21 年前
此函数将返回系统启动时间,以人类可读的字符串形式表示,例如“172 天,18 小时,15 分钟”。我没有处理单数,所以语法可能有点问题,例如 1 小时。

function uptime() {
if (!$times = posix_times()) {
return ("unknown");
} else {
$now = $times['ticks'];
$days = intval($now / (60*60*24*100));
$remainder = $now % (60*60*24*100);
$hours = intval($remainder / (60*60*100));
$remainder = $remainder % (60*60*100);
$minutes = intval($remainder / (60*100));
return ("$days days, $hours hours, $minutes minutes");
}
}
To Top