powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / browscap.ini занимает 280 Мб. И всем пофигу !
12 сообщений из 12, страница 1 из 1
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350393
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полная версия full_php_browscap.ini занимает 52 Мб .
Если в версии php 5.3 этот файл (по пути, указанному в php-опции browscap ) скачивался и анализировался php-интепретатором при каждом вызове функции get_browser , то с версии php 5.4 этот файл считывается в момент запуска php . Понятно, что в этом случае функция get_browser работает быстрее. Но не намного, поскольку скачивание файла занимает всего 20-30% времени, большая часть времени уходит на поиск в файле подходящей маски user agent 'а.

Что в итоге мы получаем ? А 280 Мб оперативки на каждый php-процесс - и только для browscap.ini . Вот что получаем.
Не 52 Мб, а 280 Мб. Т.е. в 5,5 раз больше. Судя по тому, что скорость выполнения функции get_browser существенно не изменилась, 280 Мб занимает всего лишь внутреннее представление (массивы/объекты) данных, содержащихся в файле full_php_browscap.ini .

Вопросы:
1 . Почему в Интернете ни слова нет о том, что browscap.ini стал читаться при запуске php и что занимает он аж 280 Мб в оперативке ?
2 . Если этот самый browscap.ini скачивается каждый день по крону, то как сейчас его обновлять в памяти php без перезагрузки php ?

3 . При наличии php-опции browscap php стартует 5 секунд, тогда как файл считывается 1-2 сек. Остальные 3-4 сек, судя по всему, уходят на создание соответствующих объектов в оперативной памяти. Тогда почему функция get_browser выполняется почти также медленно, как и в версии php 5.3 (где файл считывался при каждом вызове get_browser ) ?
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350395
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02большая часть времени уходит на поиск в файле подходящей маски user agent 'а. http://browscap.org/ browscap.csv (105,031 KB)

This is an industry-standard comma-separated-values version of browscap.ini. Easily imported into Access, Excel, MySQL & others.
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350398
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftCyrax_02большая часть времени уходит на поиск в файле подходящей маски user agent 'а. http://browscap.org/ browscap.csv (105,031 KB)

This is an industry-standard comma-separated-values version of browscap.ini. Easily imported into Access, Excel, MySQL & others.Насколько я понимаю, get_browser работает только с ini-форматом. С БД и с csv не работает.
Имеете ввиду, что можно закинуть csv в БД и парсить вручную ? Т.е. RLIKE -ами ?
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350399
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТ.е. RLIKE-ами ? LIKE -ами.
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350512
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02авторТ.е. RLIKE-ами ? LIKE -ами.Или даже равенством.
И не забыть индекс.
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350516
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИли даже равенством.Как это равенством ? Там в браузерных масках присутствует символ-заполнитель *
Это же не база конкретных user agent 'ов, а база масок. Конкретных User agent 'ов будет на 2 порядка больше...

miksoft , предлагая вариант с БД, вы считаете, что этот вариант будет работать быстрее ?
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350528
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02авторИли даже равенством.Как это равенством ? Там в браузерных масках присутствует символ-заполнитель *
Это же не база конкретных user agent 'ов, а база масок. Конкретных User agent 'ов будет на 2 порядка больше...

miksoft , предлагая вариант с БД, вы считаете, что этот вариант будет работать быстрее ?Сейчас посмотрел внутрь, действительно, там звездочки. Почему-то подумал, что в самом большом файле будут конкретные значения.
Тогда не могу быть уверен, что это будет лучше. Но, имхо, стоит попробовать. Но еще нужно убедится, что у MySQL хватит буферного кэша, чтобы вместить эту таблицу и ее индексы целиком (это помимо других таблиц и индексов базы). Иначе возникнет физическое чтение с диска, что испортит всю затею.
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350715
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПочему-то подумал, что в самом большом файле будут конкретные значения.С конкретными агентами файл будет весить гигабайты.
А почему весит вдвое больше, потому что там (в csv) содержится "плоский" список всех масок (маска - значение). А в ini-файле формат несколько иной, упакованный - характеристики, общие для некоторой группы масок, прописаны по одному разу. Т.е. характеристики для каждой маски агента прописаны не в одном месте, а в 2-3 местах - проходим по файлу и постепенно набираем все характеристики. Примерно так. За счёт этого ini и весит меньше.

авторНо еще нужно убедится, что у MySQL хватит буферного кэша, чтобы вместить эту таблицу и ее индексы целиком (это помимо других таблиц и индексов базы). Иначе возникнет физическое чтение с диска, что испортит всю затею. Чтобы mysql гарантированно держал индексы browscap-таблицы в памяти, необходимо задать такой размер буфера, чтобы в него уместились индексы всех таблиц всех БД (ведь ему не скажешь, что у browscap-таблицы индексы нужно держать в памяти обязательно, а индексы других таблиц - не обязательно). Это ещё можно.

Но чтобы всю browscap-таблицу он в памяти держал, нужно такие буфера дать, чтобы все таблицы всех БД уместились в памяти. А это уже нереально.

Плюс те самые 280 МБ памяти мы не освободим, если перенесём агенты в БД. Вернее, освободим у php-процессов, но займём у mysql. Хотя, здесь размерами буферов можно поиграться...
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350716
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА почему весит вдвое больше, потому что там (в csv) содержится "плоский" список всех масок (маска - значение)
Маска - полный список характеристик (csv-классика)
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39350734
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А эти 280 мегабайт лежал в shared памяти и на каждый процесс, я подозреваю, не выделяются отдельно. А 280 мб по нынешним меркам это копейки.
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39351187
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА эти 280 мегабайт лежал в shared памяти и на каждый процесс, я подозреваю, не выделяются отдельноЛежат в резидентной памяти и являются общими для всех рабочих php-процессов.

авторА 280 мб по нынешним меркам это копейки. Тем не менее, этот объём памяти почти на порядок превышает суммарную память, занимаемую всеми подключенными php-модулями (распространёнными, обычно подключаемыми).
...
Рейтинг: 0 / 0
browscap.ini занимает 280 Мб. И всем пофигу !
    #39394266
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо то, что эти 280 Мб через некоторое время после запуска php-fpm сбрасываются в своп из-за редкого использования.
Вопрос: кто как делает ?

авторbrowscap.csv (105,031 KB)
This is an industry-standard comma-separated-values version of browscap.ini. Easily imported into Access, Excel, MySQL & others.
Допустим, закинули данные (маски) в БД. И что дальше с этим делать ? Функция get_browscap с БД не работает.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / browscap.ini занимает 280 Мб. И всем пофигу !
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]