С нами с 19.04.05
Сообщения: 1577
Рейтинг: 957
|
Добавлено: 03/06/15 в 02:21 |
Цель точно определять имя браузера.
Выбрал базу - browscap.ini размер:13Mb
Проблема: Время работы скрипта парсящего базу слишком долгое - 23.2953 сек.
Или всё дело в слабом сервере?
Atom (Intel Atom 330 1.6GHz Dual Core, 1Gb RAM, 250Gb SATA HDD, 100Mbps port, 6000Gb bandwidth)
Может есть возможность ускорить работу скрипта? Потому что, SxGeo с 14 Gb GEO базой отрабатывает шустро, а данный скрипт очень медленно.
Подскажите в какую сторону смотреть - может утечка времени в скрипте парсинга базы или как то закешировать базу можно или ещё как ускорить?
Скрипты:
http://alexandre.alapetite.fr/doc-alex/php-local-browscap/
Скрипт с подключённым файла парсинга базы.
Код: [развернуть] |
<?php
if (get_cfg_var('browscap'))
$browser=get_browser(); //If available, use PHP native function
else
{
require_once('php-local-browscap.php');
$browser=get_browser_local();
}
print_r($browser);
?>
|
php-local-browscap.php сам код парсинга браузера, в зависимости от юзер агента:
Код: [развернуть] | <?php
$browscapIni=null; //Cache
$browscapPath=''; //Cached database
function _sortBrowscap($a,$b)
{
$sa=strlen($a);
$sb=strlen($b);
if ($sa>$sb) return -1;
elseif ($sa<$sb) return 1;
else return strcasecmp($a,$b);
}
function _lowerBrowscap($r) {return array_change_key_case($r,CASE_LOWER);}
function get_browser_local($user_agent=null,$return_array=false,$db='./browscap.ini',$cache=false)
{//http://alexandre.alapetite.fr/doc-alex/php-local-browscap/
//Get php_browscap.ini on http://browsers.garykeith.com/downloads.asp
if (($user_agent==null)&&isset($_SERVER['HTTP_USER_AGENT'])) $user_agent=$_SERVER['HTTP_USER_AGENT'];
global $browscapIni;
global $browscapPath;
if ((!isset($browscapIni))||(!$cache)||($browscapPath!==$db))
{
$browscapIni=defined('INI_SCANNER_RAW') ? parse_ini_file($db,true,INI_SCANNER_RAW) : parse_ini_file($db,true);
$browscapPath=$db;
uksort($browscapIni,'_sortBrowscap');
$browscapIni=array_map('_lowerBrowscap',$browscapIni);
}
$cap=null;
foreach ($browscapIni as $key=>$value)
{
if (($key!='*')&&(!array_key_exists('parent',$value))) continue;
$keyEreg='^'.str_replace(
array('\\','.','?','*','^','$','[',']','|','(',')','+','{','}','%'),
array('\\\\','\\.','.','.*','\\^','\\$','\\[','\\]','\\|','\\(','\\)','\\+','\\{','\\}','\\%'),
$key).'$';
if (preg_match('%'.$keyEreg.'%i',$user_agent))
{
$cap=array('browser_name_regex'=>strtolower($keyEreg),'browser_name_pattern'=>$key)+$value;
$maxDeep=8;
while (array_key_exists('parent',$value)&&array_key_exists($parent=$value['parent'],$browscapIni)&&(--$maxDeep>0))
$cap+=($value=$browscapIni[$parent]);
break;
}
}
if (!$cache) $browscapIni=null;
return $return_array ? $cap : (object)$cap;
} |
|
|
Link Trade - блоги в Art,Comics,Hentai,3D и тп - 338198557
|
0
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 03/06/15 в 09:27 |
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
|
Спонсор раздела
|