無題 名前: Lavie [2021/07/25,18:49:25] No.737
takaqさん、はじめまして。
Windowsで稼動時間を表示したく、彷徨っておりましたらたどり着きました。
唐突ですが、質問させてください。
uptime.exeのサンプルでは、「稼動時間 : 0日 0時間 2分 5秒」というふうにちゃんと表示されるのですが、
net statistics server コマンド、net statistics workstation コマンドでは、「稼動時間 : 18833 日, 9 時間, 47 分, 9 秒」と表示されてしまいます。
OSは、Windows Server2016 Standardです。この前一度だけWindowsUPDATEを行っています。
修正箇所等ございましたら、教えていただけたら幸いです。よろしくお願いいたします。
>> 外しているかもしれませんが・・・ 名前: takaq [2021/07/25,21:06:25] No.738
Lavieさん、訪問と投稿ありがとうございます。
とてもうれしく思います。
質問の件ですが、Windows Server からかなり遠ざかってしまっているので、実環境が無く的確な回答でないことご容赦ください。
外しているかもしれませんが、以下記載いたします。

・まずは、コマンドプロンプトで「net statistics server」または「net statistics workstation」を実行します。
そして、"統計情報の開始日時"が正しい時間表示されているかを確認します。
この値が不正ですと稼働時間はとれません。
・"統計情報の開始日時"が正しい時間表示である場合、今度は稼動時間を表示する PHPスクリプトで値が取得できているかを確認します。

$winstats = shell_exec("net statistics server");
の次あたりに echo $winstats; としてスクリプト実行してみます。

前記が希望どおり取得できている時は、取得値から稼働時間を各変数に入れ表示内容を生成する部分の値を echo でスクリプト実行し確認します。

例えば

preg_match("(\d{4}/\d{1,2}/\d{1,2}\s+\d{1,2}\:\d{2})", $winstats, $matches);
の後ろあたりに echo $matches;

if (days > 0) {
uptimeString += days;
uptimeString += ((days == 1) ? " 日" : " 日");
}
if (hours > 0) {
uptimeString += ((days > 0) ? ", " : "") + hours;
uptimeString += ((hours == 1) ? " 時間" : " 時間");
}
if (mins > 0) {
uptimeString += ((days > 0 || hours > 0) ? ", " : "") + mins;
uptimeString += ((mins == 1) ? " 分" : " 分");
}
if (secs > 0) {
uptimeString += ((days > 0 || hours > 0 || mins > 0) ? ", " : "") + secs;
uptimeString += ((secs == 1) ? " 秒" : " 秒");
}
の後ろあたりに echo $uptimeString;

等々一つずつ見ていきます。

  こんな感じで修正箇所を自身で見つけていくしかないと思います。
>> 無題 名前: Lavie [2021/07/26,20:45:55] No.739
akaqさん、早速のご回答ありがとうございます。
まさか、こんなに早く連絡があるとは...大変うれしい限りです。^^

統計情報の開始日時ですが、「net statistics workstation」を実行すると、
「統計情報の開始日時 2021/07/26 19:49:14」と表示されましたので、正常でした。

$winstats = shell_exec("net statistics server");
の次あたりに echo $winstats; としてスクリプト実行してみます。ですが、何も表示されません。
preg_match("(\d{4}/\d{1,2}/\d{1,2}\s+\d{1,2}\:\d{2})", $winstats, $matches);
の後ろあたりに echo $matches;ですが、Arrayと表示されます。
当然ながら、「echo $uptimeString;」も何も表示されません。

どうやら、「shell_exec」がちゃんと動作していないと思いますので、設定を再度確認してみます。
また、ご報告させていただきます。
ありがとうございました。
>> うまく解決できることを祈念しております。 名前: takaq [2021/07/26,23:31:07] No.740
Lavieさん、さっそくのご連絡ありがとうございます。

ネット検索してみますと「shell_exec」について色々ヒットしますね。
サーバーOSや実装しているWebサーバーソフト、php 等々の設定、サーバー機上の実行権限とか色々あって大変ですが頑張ってみてください。
Webサーバーソフトのログやphpをデバックモードにしてエラー表示させたりとかも参考になると思います。
うまく解決できることを祈念しております。


[返信しないで戻る]