サーバー側のPHPスクリプトが実行されるため、1秒間に何度も発生するため、configsのダウンロード速度はかなり重要なパラメーターです。 彼は時々、あまり注目されませんが。 PHPスクリプトの設定を保存するためのさまざまなオプションを、速度の観点から比較してみましょう。 さて、彼らの利便性について簡単に触れてください。
したがって、実験的:
- Iniファイル
- PHPスクリプト
- XMLファイル
- テキストファイル
- シリアル化されたデータファイル
- 非競争-define'amiを使用したPHPスクリプト
- JSONファイルNEW!
条件:
- できるだけ早くファイルから設定をダウンロードする
- 「キー」=>「値」の形式で設定の配列を返します
- 構成ファイルには、10、100、または1000の構成パラメーターが含まれています。これらは短い行です。
- 構成は連続して1000回読み取られ、秒単位の動作時間が測定されます
機器の構成は説明しません。 スクリプトの速度はサーバーに依存することは明らかですが、この場合、サーバーではなくスクリプトが比較されます。
確かに、サーバーソフトウェアについて少し説明する必要があります。 低負荷時には、実際のWebサーバーが使用されました。 したがって、サーバー構成は「戦闘」です。LinuxDebian Lenny、大量のメモリとハードドライブのRAID1アレイ。 eAcceleratorを使用したPHP 5.2.xシリーズ(ただし、最新ではありません)。 テスト中はZend Optimizerが無効になったため、テストはより「クリーン」になり、結果への影響は最小限になりました。 eAcceleratorを使用しないテストも実施されましたが、奇妙なことに、これは力の分散に大きな影響を与えませんでした。 私の意見では、その理由は、eAcceleratorがPHPオペコードのディスクキャッシングと、一定の時間を「消費する」ファイル変更時間の比較のために構成されているという事実にあります。
Iniファイル
: 0.015, 0.086, 0.784
:
x1 = 1
x2 = 2
x3 = 3
:
function config($file) {
return parse_ini_file($file);
}
, . .
PHP-
: 0.029, 0.111, 0.902
:
<?
return array (
'x1' => '1',
'x2' => '2',
'x3' => '3',
);
?>
:
function config($file) {
return include($file);
}
. return, . , , , . .
, INI-, . , , PHP-, .
XML-
: 0.062, 0.385, 3.911
:
<root>
<x1>1</x1>
<x2>2</x2>
<x3>3</x3>
</root>
:
function config($file) {
$r = array();
$dom = new DOMDocument;
$dom->load($file);
foreach ($dom->firstChild->childNodes as $node) {
if ($node->nodeType == XML_ELEMENT_NODE) {
$r[$node->nodeName] = $node->firstChild->nodeValue;
}
}
return $r;
}
: , , . , PHP- , return XML- ( , , ). . .
: NEW! 0.047, 0.276, 2.791
: NEW!
function config($file) {
$r = array();
foreach(simplexml_load_file($file) as $k => $v) {
$r[$key] = strval($v);
}
return $r;
}
SimpleXML , , . , .
: 0.034, 0.250, 2.369
:
x1 1
x2 2
x3 3
:
function config($file) {
$r = array();
if ($F = fopen($file, "r")) {
while (($line = fgets($F)) !== false) {
list($k, $v) = explode("\t", $line, 2);
$r[trim($k)] = trim($v);
}
fclose($F);
}
return $r;
}
, , . , , parse_ini_file, , . , .
: NEW! 0.036, 0.250, 2.213
: NEW!
function config($file) {
$r = array();
foreach (explode("\n", file_get_contents($file)) as $line) {
list($k, $v) = explode("\t", $line, 2);
$r[trim($k)] = trim($v);
}
return $r;
}
. , , .
: 0.011, 0.041, 0.309
:
a:3:{s:2:"x1";s:1:"1";s:2:"x2";s:1:"2";s:2:"x3";s:1:"3";}
:
function config($file) {
return unserialize(file_get_contents($file));
}
— .
PHP- define'
: 0.045, 0.252, 2.404
:
<?
define("x1", "1");
define("x2", "2");
define("x3", "3");
?>
, , , . , , define .
JSON- NEW!
: 0.015, 0.057, 0.495
:
{"x1":"1","x2":"2","x3":"3"}
:
function config($file) {
return json_decode(file_get_contents($file), true);
}
JSON . PHP , INI-, PHP.
, — . , . , .
— , . JSON- INI-, , .
, — PHP. , .
XML — . , , .
, define' , .
, ? . , PHP-, . PHP :
: 0.018, 0.046, 0.317
, .
:
function config($file) {
$file_dat = "$file.dat";
if (!file_exists($file_dat) || filemtime($file_dat) <= filemtime($file)) {
$r = include($file);
if ($F = fopen($file_dat, "w")) {
fwrite($F, serialize($r));
fclose($F);
}
} else {
$r = unserialize(file_get_contents($file_dat));
}
return $r;
}
, , , , .
P.S. PHP- . , : . , . , PHP 4 5 (, , XML). , .
P.P.S. JSON.
P.P.P.S. . , , - .