Pull to refresh

поиск + кеширование в CodeIgniter

Reading time2 min
Views873
Привет Хабр и всем кто использует PHP фреймворк CodeIgniter!

В процессе создания некого приложения на CI у меня возник вопрос о поиске информации в базе данных без использования GET.
Никаких готовых решений в CI wiki я не нашел, так что решил сделать свой «велосипед».


Для начала рассмотрим примеры ссылок которые мы можем видеть при поиске на разных сайтах:

Пример ссылок передачи параметров через GET
  1. sitename/search/?q=текст
  2. sitename/index.php?do=search&p1=value1&p2=value2&uname=test

Еще пример:
  1. sitename/search/query/p1:0:p2:value:p3: текст

Если ищем по одному параметру то ссылка выглядит более или менее нормально
Но если нам нужно искать что-то например по 5 или больше параметрах?
Вот тогда наша ссылка и становится ужасной заставляет нас искать другое решение.

Пример ссылок передачи параметров через POST (пока одна только =) )
  1. sitename/search/query/unique_identifier/page_number

Собственно в такой ссылке нет никаких параметров для поиска,
только идентификатор уже сохраненного в кеше результата поиска.

Если мы будем передавать параметры через массив POST то наша ссылка будеть иметь
почти одинаковый вид при разных входящих параметрах поиска. Осталось только решить
«проблемы и сложности» подобного метода поиска.

Для решения нам понадобится CI + «любой класс кеширования» и немного времени.

И так, как же будет работать наша система:

1. Нужно создать уникальный ключ для сохранения результатов поиска в кеше.
(ссылка для просмотра результатов поиска будет выглядеть примерно так:
sitename/search/query/7ad549053bf2be45f309920b7b6a24bf/10)

2. Сделать запрос к базе данных.
3. Сохранить результат в кеше.
4. Вывести результат поиска пользователю.

Хотелось бы привести пару примеров кода здесь,
но кода много так что предоставлю ссылку для
скачивания уже готового контроллера для поиска пользователей + собственную библиотеку кеширования и тестовою базу данных.

Скачать

Tags:
Hubs:
+6
Comments19

Articles

Change theme settings