X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> PHP функция get_browser() и browscap.ini
ixman
ixman
Topic Starter сообщение 6.8.2017, 13:20; Ответить: ixman
Сообщение #1


Знаю что здесь спецов по данной теме мало, но всё же они есть. Надеюсь что кто-то поможет ответом.

Есть такая php функция как get_browser(), но для её полноценной работы на сервере необходим файл browscap.ini. На днях я решил попробовать её использовать, но столкнулся с рядом проблем, которые мне решила поддержка. В общем добились, чтобы эта функция наконец-то корректно заработала на моём VDS. В общем на сервер я залил полную версию файла browscap.ini размером 63,4Mb. Кто не в курсе их три на выбор. Lite около 400Kb, medium примерно 13Mb и full версия около 64Mb. Отличается объёмом выдаваемой информации по тому или иному браузеру.

Так вот, после того как эта функция начала работать, время от времени стала на всех сайтах, расположенных на VDS, с начало вылетать 500 ошибка , а потом вообще все сайты падали. Я уточнял у поддержки потянет ли мой VDS с оперативкой в 2Gb ini файл размером >63Mb, на что получил положительный ответ. Но сервер падает, и я опять в поддержу. Там морозились долго, сослались на то, что не хватает оперативки, а от чего ХЗ. Предложили заказать платное администрирование, для выяснения деталей моих проблем. Мой вопрос о том, что в этих проблемах виноват browscap.ini проигнорировали.

Я пошёл в настройки php и отключил это файл и о чудо всё стабилизировалось.

Отсюда вопрос, можно ли как-то настроить сервер чтобы считывать такой файл с оперативкой в 2Gb и чтобы корректно работала функция get_browser()? 

Либо буду рад альтернативным вариантам.

P.S. Кстати php класса для работы с browscap.ini также отказывается работать на VDS. Хотя локально оба варианта у меня работают на ура.

Сообщение отредактировал Ixman - 6.8.2017, 13:22
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PunPun
PunPun
сообщение 6.8.2017, 13:36; Ответить: PunPun
Сообщение #2


Можно спросить для чего вам использовать эту функцию?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 6.8.2017, 13:39; Ответить: ixman
Сообщение #3


PunPun, для сбора статистики по браузерам, операционным системам и их версиям. Да и вообще там много какой статистики можно взять, особенно в full версии
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PunPun
PunPun
сообщение 6.8.2017, 13:44; Ответить: PunPun
Сообщение #4


Ixman, используйте лучше классы по работе с user_agent
https://github.com/piwik/device-detector
https://github.com/sinergi/php-browser-detector
https://github.com/cbschuld/Browser.php
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 6.8.2017, 13:47; Ответить: ixman
Сообщение #5


PunPun, благодарю за полезные ссылки 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PunPun
PunPun
сообщение 6.8.2017, 14:01; Ответить: PunPun
Сообщение #6


@[member=Ixman], я лично использовал этот класс https://github.com/cbschuld/Browser.php только там нет поддержки Yandex Browser, я добавил себе. На случай если вам нужно будет:
Развернуть/Свернуть

Открыть Browser.php найти

const BROWSER_PLAYSTATION = "PlayStation";

Ниже вставить

const BROWSER_YANDEX = 'Yandex'; // https://browser.yandex.ru/

Далее найти

$this->checkBrowserNetscapeNavigator9Plus() ||

Ниже вставить

$this->checkBrowserYandex() ||

Далее найти

    /**
     * Detect if URL is loaded from FacebookExternalHit
     * @return boolean True if it detects FacebookExternalHit otherwise false
     */
    protected function checkFacebookExternalHit()

Выше вставить

/**
* In update 2.0.1 add checking Yandex Browser by PunPun
* @return boolean True if the browser is Yandex otherwise false
*/
protected function checkBrowserYandex()
{
if(stripos($this->_agent, 'YaBrowser') !== false && preg_match('/YaBrowser\\/(.+?)\s/i', $this->_agent, $matches))
{
$this->setVersion($matches[1]);
$this->setBrowser(self::BROWSER_YANDEX);
return true;
}
elseif(stripos($this->_agent, 'Yowser') !== false && preg_match('/Yowser\\/(.+?)\s/i', $this->_agent, $matches))
{
$this->setVersion($matches[1]);
$this->setBrowser(self::BROWSER_YANDEX);
return true;
}
return false;
}

Теперь будет поддержка Yandex'а


Правки, не актуальны. Увы, не заметил, в марте добавили уже Yandex и все возможные боты.


Сообщение отредактировал PunPun - 6.8.2017, 14:10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 6.8.2017, 15:58; Ответить: ixman
Сообщение #7


PunPun, ну я вам ещё раз очень благодарен, сейчас второй раз карму повысить не могу. Вечером попробую освоить этот класс.
Сейчас посмотрел этот класс, я уже его смотрел, он меня чем-то не устроил. Но позже заюзаю снова
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PunPun
PunPun
сообщение 7.8.2017, 12:29; Ответить: PunPun
Сообщение #8


@[member=Ixman], мне тоже, но использовал его из-за простого кода)) Еще один минус что не добавили версии Windows до сих пор, я добавил их сам. Для того что бы иметь версии Windows юзера нужно сделать следующее.

Открыть Browser.php найти

if (stripos($this->_agent, 'windows') !== false) {

Выше вставить

$OS_WIN_VER = array(
'Win311' => 'Win16',
'Win95' => '(Windows 95)|(Win95)|(Windows_95)',
'WinME' => '(Windows 98)|(Win 9x 4.90)|(Windows ME)',
'Win98' => '(Windows 98)|(Win98)',
'Win2000' => '(Windows NT 5.0)|(Windows 2000)',
'WinXP' => '(Windows NT 5.1)|(Windows XP)',
'WinServer2003' => '(Windows NT 5.2)',
'WinVista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 6.1)',
'Windows 8' => '(Windows NT 6.2)',
'Windows 8.1' => '(Windows NT 6.3)',
'Windows 10' => '(Windows NT 10.0)',
'WinNT' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)'
);

Далее найти (первый)

$this->_platform = self::PLATFORM_WINDOWS;

Заменить на

foreach ($OS_WIN_VER as $os => $pattern) {
if (preg_match('/' . $pattern . '/i', $this->_agent)) {
$this->_platform = $os;
break;
}
}

Ну а применение очень простое.
Заливаем в нужною папку файл, и потом в нужном файле подключаем

include 'Browser.php';
$browser = new Browser();
echo $browser->getPlatform(); // Операционная система
echo $browser->getBrowser(); // Браузер
echo $browser->getVersion(); // Версия браузера
echo $browser->isMobile(); // С телефона ли сидит пользователь
echo $browser->isTablet(); // С планшета ли сидит пользователь
echo $browser->isRobot(); // Проверка на робота ПС



Сообщение отредактировал PunPun - 7.8.2017, 12:34
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
Topic Starter сообщение 7.8.2017, 14:59; Ответить: ixman
Сообщение #9


PunPun, я не стал его использовать, ибо он ботов не корректно определяет. Ещё не определяет версии ОС. Но да он прост в использовании.

Я заюзал этот https://github.com/piwik/device-detector с грехом пополам. Composer у меня никак не работает на локалке и кое как сообразил как его подключить. Но зато он делает всё то, что мне нужно и выдаёт достаточно инфы не только по браузерам, но и по ботам. Одно только но, не разобрался как кеширование заставить работать. А так всё супер

Конечно get_browser() с ini полной версии ни один класс не сделает, но как я понял там либо сервер настраивать надо, либо это для реальных серверов с большим объёмом ОЗУ.

Ещё такая задумка в голову пришла, но это на будущее конвертировать browscap.ini в базу данных и делать выборки оттуда. Это куда более производительнее и меньше ресурсов нужно. Зато инфы разной по браузерам очень много, это так мысли.


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал Ixman - 7.8.2017, 14:59
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3398 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1242 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44906 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1889 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3402 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 19.4.2024, 12:57
Дизайн