PHP Conference Japan 2024

posix_times

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

posix_times获取进程时间

描述

posix_times(): 数组|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 条注释

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
brain at winbot dot co dot uk
20 年前
在 FreeBSD 上不起作用。如上所述,时钟滴答间隔在不同平台上不同。

对于系统运行时间,请考虑使用管道传输 uptime 命令或类似命令,具体取决于性能是否成为问题。
not_rich_yet at hotmail dot com
21 年前
如果您希望输出“语法正确”,请尝试以下代码。例如,它将打印“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
rossz+php at vamos-wentworth dot org
22 年前
此函数将系统运行时间作为人类可读的字符串返回,例如“172 天,18 小时,15 分钟”。我没有费心处理单数,因此语法可能有点不对,例如 1 hours。

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