Bug #70490 [Opn]: get_browser function is very slow

From: Date: Thu, 07 Jan 2016 15:41:39 +0000
Subject: Bug #70490 [Opn]: get_browser function is very slow
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-198495@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70490&edit=1

 ID:                 70490
 User updated by:    webtech at mines-telecom dot fr
 Reported by:        webtech at mines-telecom dot fr
 Summary:            get_browser function is very slow
 Status:             Open
 Type:               Bug
 Package:            Performance problem
-Operating System:   OS X 10.11.1
+Operating System:   OS X 10.11.2
-PHP Version:        7.0.0RC7
+PHP Version:        7.0.1
 Block user comment: N
 Private report:     N

 New Comment:

New test :
PHP 7.0.1 : get_browser takes 1.5893349647522 sec

PHP 5.6.16 : get_browser takes 1.4182159900665 sec

It seems to be OK now.

Thanks


Previous Comments:
------------------------------------------------------------------------
[2015-11-13 13:43:13] webtech at mines-telecom dot fr

Sorry, I've made a mistake :
- the result on the last comment "get_browser takes 1.1309630870819 sec" was with PHP
5.6.15

With PHP7.0RC7 :
get_browser takes 4.4257979393005 sec

The PHP browscap file is php_browscap.ini (size: 21664 kb)

------------------------------------------------------------------------
[2015-11-13 13:34:08] webtech at mines-telecom dot fr

It's better with RC7 : get_browser takes 1.1309630870819 sec
but it's not 40 ms ;)

------------------------------------------------------------------------
[2015-11-13 13:05:17] dev018 at am-horizon dot com

Hi, I have tested your code but every time it's not take more that 40ms. Could you please test
it again

------------------------------------------------------------------------
[2015-11-04 15:16:57] David dot Gausmann at measX dot com

Hello there,

I detected the get_browser command as the lack of performance on my website today. Then I've
found this bug here.

Could you please implement a hashmap or something similar for that command?
I cannot believe that searching through an ini file needs so much time.
You could for example split the search up and delegate it to multiple threads.

Here is my example:
<?php

$dTime1 = microtime(true);
$oBrowser = get_browser('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101
Firefox/41.0');
$dTime2 = microtime(true);
$oBrowser2 = get_browser('DoesntExist');
$dTime3 = microtime(true);

echo sprintf('%.4f', $dTime2 - $dTime1), "<br>";
echo sprintf('%.4f', $dTime3 - $dTime2), "<br>";

?>

Searching for a non-existent entry still requires so much time like the regular search (> 1
second).

Kind Regards
David Gausmann

------------------------------------------------------------------------
[2015-09-21 15:26:21] webtech at mines-telecom dot fr

I'm using php_browscap.ini (16,301 KB), not the full one full_php_browscap.ini (33,714 KB).

I've upgraded to PHP7.0.0RC3 and it's the same.

Is it better to use the browscap-php library (https://github.com/browscap/browscap-php) as
recommended in http://browscap.org/ ?

I though it was better to use native PHP...

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=70490


--
Edit this bug report at https://bugs.php.net/bug.php?id=70490&edit=1


Thread (14 messages)

« previous php.bugs (#198495) next »