PHPでサーバCPUを判定する

(1/1)
Core i7 965
PHP は、CGI のように OS ネイティブなプログラムを動作させる仕組みを備えている。
そこで今回は、Windows のコマンドを使って、PHP が動作しているサーバの CPU の種類を表示させるプログラムを作ってみることにする。

サンプル・プログラム

サンプル・プログラムの解説:バッククォート

PHP で OS ネイティブなプログラムを走らせるのは簡単で、バッククォートでコマンドを囲むだけである。
バッククォートは演算子として作用し、戻り値は標準出力に返されるデータである。

ここでは Windows の set コマンドを使っており、環境変数の値がすべて変数 $output に格納する。そこから、 preg_match  関数を使い、Windows XP で標準設定される PROCESSOR_IDENTIFIER の値を取り出す。これが CPU の判定結果となる。

0055: $output = `set`;       //DOSコマンドを実行する
0056: 
0057: $flag = preg_match('/PROCESSOR_IDENTIFIER=(.*)\n/ui', $output$arr);
0058: 
0059: $body = ($flag == TRUE) ? ('CPUは ' . $arr[1]) : '判断できませんでした';

類似の関数

バッククォート演算子と等価な関数は  shell_exec  である。
また、類似する関数として、  exec  と  system  がある。

セキュリティとセーフモード

OS ネイティブなコマンドを実行できるということは、使い方によってはサーバにダメージを与えかねない。たとえば del コマンドを実行するようにすれば、サーバに必要なファイルまで削除できてしまう。
そこで、PHP には「セーフモード」という概念があり、OS を守ることができるようになっている。

セーフモードが ON の場合、バッククォート演算子などは働かない。したがって、厳密を期すなら、プログラムの冒頭で、PHP がセーフモードになっているかどうかを調べるロジックを追加すべきである。
(この項おわり)
header