Komplexe oder-Vergleiche optimieren

19/03/2016 - 11:02 von Klaus Ketelaer | Report spam
Hallo zusammen,

mit welchem Vorgehen ließe sich folgender Code am
besten optimieren?

function is_spider ($agent) {
$result = false;
if (($agent == '') or
(strpos($agent,'bot') !== false) or
(strpos($agent,'spider') !== false) or
(strpos($agent,'crawl') !== false) or

(strpos($agent,'wget') !== false) or
(strpos($agent,'webzip') !== false) or
(strpos($agent,'webmirror') !== false) or
(strpos($agent,'webcop') !== false) or
(strpos($agent,'httrack') !== false) or
(strpos($agent,'explorer') !== false) or
(strpos($agent,'wsr-agent') !== false) or
(strpos($agent,'wininet') !== false) or

(strpos($agent,'libwww-perl') !== false) or
(strpos($agent,'python') !== false) or
(strpos($agent,'java/') !== false)
)
{
$result = true;
}

return $result;
}

Es gibt so viele Wege, aber welcher bringt die beste
Performance?

Gruß Klaus
 

Lesen sie die antworten

#1 Christoph M. Becker
19/03/2016 - 11:59 | Warnen spam
Klaus Ketelaer schrieb:

mit welchem Vorgehen ließe sich folgender Code am
besten optimieren?

function is_spider ($agent) {
$result = false;
if (($agent == '') or
(strpos($agent,'bot') !== false) or
(strpos($agent,'spider') !== false) or


<snip>
)
{
$result = true;
}

return $result;
}

Es gibt so viele Wege, aber welcher bringt die beste
Performance?



Das solltest Du am besten konkret selbst ausprobieren. Eine
auszutestende Alternative wàre vielleicht:

preg_match('/bot|spider|…/')

Aber Du solltest auch ernsthaft über folgende Variante nachdenken:

function is_spider ($agent) {
throw new LogicException(
'Keine Sonderbehandlung für Spider, die sowieso nicht'
. ' zuverlàssig erkannt werden können!'
);
}

Christoph M. Becker

Ähnliche fragen