|
|
|
| Временная таблица создается запросом CREATE TEMPORARY TABLE и затем заполнятся информацией. Вслед за этим требуется сохранить ее в сессии для того, чтобы при повторном вызове скрипта этим же посетителем вновь предоставить ему эту таблицу вместе с содержащимися в ней данными.
Возможно ли это осуществить? | |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 00:02)
| | зачем в сессию? это огромный ненужный траффик между серверами.
просто сохраняете в обычную таблицу по средствам оператора INSERT...SELECT
затем при необходимости достаете ее "тем же макаром" в новоиспеченную временную таблицу
просто при создании временной таблицы проверяйте есть ли данные которые необходимо загрузить, если есть то грузите, если нет работаете как первый раз. | |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 00:02)
| | Нет так уже не получится, придется сохранять данные в постоянную таблицу.
PS В PHP можно перегрузить механизм сессий таким образом, что вы сами будете управлять процессом сохранения и извлечения информации в сессию и из сессии (в частности можете складировать её в базу данных). | |
|
|
|
|
|
|
|
для: cheops
(16.12.2012 в 07:21)
| | Сейчас как раз и сделано все на основе постоянной таблицы, в которую помещется результат поиска. Но иногда результат поиска содержат слишком много информации для вывода на одной странице, поэтому ее показывают частями.
И может случиться так, что во время просмотра и листания другой посетитель сделает свой поиск и изменит содержимое таблицы с результатами поиска, а так не годится. Вот по этой причине и нужна временная таблица - для каждого посетителя своя. И чтобы она сохранялась при листании, т.е. при переходе по страницам.
Таблица небольшая - 5 полей и максимум 500 строк. По идее, можно перекачать ее в пять массивов и их разместить в сессии, а потом извлекать при необходимости. Но корректен ли такой прием? | |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 10:50)
| | Вот по этой причине и нужна временная таблица - для каждого посетителя своя
Владимир Николаевич, в этом и заключается ошибка.
Если нужно сохранить историю запросов, то писать нужно всех пользователей в одну таблицу, указывая время запроса и идентификатор пользователя, по которому в любое время можно выбрать либо текущий запрос либо любой другой, естественно для снижения нагрузки нужно предусмотреть систему архивации.
Но если история запросов не нужна, то можно обойтись всего лишь кешированием результата запроса и не сохранять его ни в какие таблицы и сессии.
___
инет тупит, уже больше часа ответить не могу | |
|
|
|
|
|
|
|
для: Valick
(16.12.2012 в 13:20)
| | Тут задача немного иная.
Вот менеджеру Иванову потребовался товар и он сделал запрос. Получил массив из пятисот строк и на страницах по десять строк листает его. Листать он может долго, а потому всю выборку для него надо где-то хранить все это время.
А тем временем Петрову понадобился другой товар и он сделал свой запрос и получил свой массив, который тоже будет листать минут десять.
Получается, что для каждого человека нужно свое хранилище. Таковым может быть сессия.
Так? | |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 14:05)
| | Результаты не нужно показывать поисковым роботам?
Для запроса требуется авторизация?
Дело в том, что сейчас существует масса механизмов, начиная с хранилища браузера, заканчивая NoSQL-базами данных и специализированными поисковыми серверами вроде Sphinx. | |
|
|
|
|
|
|
|
для: cheops
(16.12.2012 в 14:38)
| | Авторизация не требуется, и индексация роботами запрещена. Как это может упростить дело?
(С учетом того, что это единственная операция, ради которой нет смысла заводить специальную базу или делать какие-то иные масштабные дополнения к серверным программам). | |
|
|
|
|
|
|
|
для: Владимир55
(16.12.2012 в 16:53)
| | Авторизация не требуется
это наоборот несколько усложняет, но не делает невозможным | |
|
|
|