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 の判定結果となる。

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

類似の関数

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

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

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

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