Startování PHP je daleko dražší operace, než konexe do mysql. Takže v okamžiku, kdy se startuje PHP, tak je to jedno - nejdražší bude start PHP procesu a nějaká další vopičárna je jedno. V okamžiku, kdy se používá nějaké fastcgi, tak jsou čásy následující:
1.6593210697174 - 10000 dotazů do pole načteného ze souboru
1.551509141922 - 10000 dotazů do databáze
1.1013481616974 - 10000 dotazů do databáze používající pconnect
Soubor je tedy jednoznačně pomalejší než databáze. Kód (v databázi i v souboru je 1000 ip):
<?
$a=microtime(true);
for($x=0; $x< 10000;$x++) {
$out=file('out.txt');
$out=array_flip($out);
$res=key_exists('1.2.3.4', $out);
}
echo microtime(true) - $a;
$a=microtime(true);
for($x=0; $x< 10000;$x++) {
$q=mysqli_connect('','','','test');
$res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
$res=$res->fetch_row()[0];
}
echo microtime(true) - $a;
echo "\n<br>\n";
$a=microtime(true);
for($x=0; $x< 10000;$x++) {
$q=mysqli_connect('p:localhost','','','test');
$res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
$res=$res->fetch_row()[0];
}
echo microtime(true) - $a;
echo "\n<br>\n";