Быстрый способ поиска данных в PHP - PullRequest
4 голосов
/ 01 июня 2010

У меня есть таблица данных с 600 000 записей размером около 25 мегабайт. Он индексируется 4-х байтовым ключом.

Есть ли способ быстро найти строку в таком наборе данных с помощью PHP, не прибегая к MySQL?

Рассматриваемый веб-сайт в основном статичен с незначительным кодом PHP и без зависимостей от базы данных, поэтому он быстрый Я хотел бы добавить эти данные без использования MySQL, если это возможно.

В C ++ я бы отображал файл в памяти и выполнял бинарный поиск в нем. Есть ли способ сделать что-то подобное в PHP?

Ответы [ 3 ]

1 голос
/ 01 июня 2010

В C ++ вы бы останавливали и запускали приложение каждый раз, когда пользователь хотел посмотреть файл по-другому, поэтому загружая и выгружая файл? Вероятно, нет, но именно так php отличается от приложений и языков программирования приложений.

В PHP есть инструменты, которые помогут вам разобраться с разрушением / наращиванием среды. Этими инструментами являются утилиты кэширования базы данных и / или ключей, такие как memcache. Используйте правильный инструмент для правильной работы.

1 голос
/ 01 июня 2010

PHP (по крайней мере, 5.3) уже должен быть оптимизирован для использования mmap, если он доступен, и это, вероятно, выгодно. Следовательно, вы можете использовать ту же стратегию, что и для C ++:

  • Открыть поток с помощью fopen
  • Перемещайтесь для своего бинарного поиска с fseek и fread

РЕДАКТИРОВАТЬ: на самом деле, кажется, что использовать Mmap только в некоторых других обстоятельствах, таких как file_get_contents. Это не должно иметь значения, но вы также можете попробовать file_get_contents.

1 голос
/ 01 июня 2010

Я бы предложил memcachedb или что-то подобное. Если вы собираетесь обрабатывать это полностью в PHP, сценарий должен будет прочитать весь файл / datastruct для каждого запроса. Это невозможно сделать в разумные сроки динамически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...