|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
Полная версия 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 ) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 02:16 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 02:56 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
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 -ами ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 03:16 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
авторТ.е. RLIKE-ами ? LIKE -ами. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 03:21 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
Cyrax_02авторТ.е. RLIKE-ами ? LIKE -ами.Или даже равенством. И не забыть индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 16:00 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
авторИли даже равенством.Как это равенством ? Там в браузерных масках присутствует символ-заполнитель * Это же не база конкретных user agent 'ов, а база масок. Конкретных User agent 'ов будет на 2 порядка больше... miksoft , предлагая вариант с БД, вы считаете, что этот вариант будет работать быстрее ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 16:09 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
Cyrax_02авторИли даже равенством.Как это равенством ? Там в браузерных масках присутствует символ-заполнитель * Это же не база конкретных user agent 'ов, а база масок. Конкретных User agent 'ов будет на 2 порядка больше... miksoft , предлагая вариант с БД, вы считаете, что этот вариант будет работать быстрее ?Сейчас посмотрел внутрь, действительно, там звездочки. Почему-то подумал, что в самом большом файле будут конкретные значения. Тогда не могу быть уверен, что это будет лучше. Но, имхо, стоит попробовать. Но еще нужно убедится, что у MySQL хватит буферного кэша, чтобы вместить эту таблицу и ее индексы целиком (это помимо других таблиц и индексов базы). Иначе возникнет физическое чтение с диска, что испортит всю затею. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 16:38 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
авторПочему-то подумал, что в самом большом файле будут конкретные значения.С конкретными агентами файл будет весить гигабайты. А почему весит вдвое больше, потому что там (в csv) содержится "плоский" список всех масок (маска - значение). А в ini-файле формат несколько иной, упакованный - характеристики, общие для некоторой группы масок, прописаны по одному разу. Т.е. характеристики для каждой маски агента прописаны не в одном месте, а в 2-3 местах - проходим по файлу и постепенно набираем все характеристики. Примерно так. За счёт этого ini и весит меньше. авторНо еще нужно убедится, что у MySQL хватит буферного кэша, чтобы вместить эту таблицу и ее индексы целиком (это помимо других таблиц и индексов базы). Иначе возникнет физическое чтение с диска, что испортит всю затею. Чтобы mysql гарантированно держал индексы browscap-таблицы в памяти, необходимо задать такой размер буфера, чтобы в него уместились индексы всех таблиц всех БД (ведь ему не скажешь, что у browscap-таблицы индексы нужно держать в памяти обязательно, а индексы других таблиц - не обязательно). Это ещё можно. Но чтобы всю browscap-таблицу он в памяти держал, нужно такие буфера дать, чтобы все таблицы всех БД уместились в памяти. А это уже нереально. Плюс те самые 280 МБ памяти мы не освободим, если перенесём агенты в БД. Вернее, освободим у php-процессов, но займём у mysql. Хотя, здесь размерами буферов можно поиграться... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 03:13 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
авторА почему весит вдвое больше, потому что там (в csv) содержится "плоский" список всех масок (маска - значение) Маска - полный список характеристик (csv-классика) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 03:14 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
А эти 280 мегабайт лежал в shared памяти и на каждый процесс, я подозреваю, не выделяются отдельно. А 280 мб по нынешним меркам это копейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 07:37 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
авторА эти 280 мегабайт лежал в shared памяти и на каждый процесс, я подозреваю, не выделяются отдельноЛежат в резидентной памяти и являются общими для всех рабочих php-процессов. авторА 280 мб по нынешним меркам это копейки. Тем не менее, этот объём памяти почти на порядок превышает суммарную память, занимаемую всеми подключенными php-модулями (распространёнными, обычно подключаемыми). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 15:56 |
|
browscap.ini занимает 280 Мб. И всем пофигу !
|
|||
---|---|---|---|
#18+
Хорошо то, что эти 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 с БД не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 23:23 |
|
|
start [/forum/topic.php?fid=23&fpage=36&tid=1460783]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 130ms |
0 / 0 |