Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли временную таблицу передать через сессию?
 
 автор: Владимир55   (16.12.2012 в 00:02)   письмо автору
 
 

Временная таблица создается запросом CREATE TEMPORARY TABLE и затем заполнятся информацией. Вслед за этим требуется сохранить ее в сессии для того, чтобы при повторном вызове скрипта этим же посетителем вновь предоставить ему эту таблицу вместе с содержащимися в ней данными.

Возможно ли это осуществить?

  Ответить  
 
 автор: Valick   (16.12.2012 в 00:20)   письмо автору
 
   для: Владимир55   (16.12.2012 в 00:02)
 

зачем в сессию? это огромный ненужный траффик между серверами.
просто сохраняете в обычную таблицу по средствам оператора INSERT...SELECT
затем при необходимости достаете ее "тем же макаром" в новоиспеченную временную таблицу
просто при создании временной таблицы проверяйте есть ли данные которые необходимо загрузить, если есть то грузите, если нет работаете как первый раз.

  Ответить  
 
 автор: cheops   (16.12.2012 в 07:21)   письмо автору
 
   для: Владимир55   (16.12.2012 в 00:02)
 

Нет так уже не получится, придется сохранять данные в постоянную таблицу.

PS В PHP можно перегрузить механизм сессий таким образом, что вы сами будете управлять процессом сохранения и извлечения информации в сессию и из сессии (в частности можете складировать её в базу данных).

  Ответить  
 
 автор: Владимир55   (16.12.2012 в 10:50)   письмо автору
 
   для: cheops   (16.12.2012 в 07:21)
 

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

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

Таблица небольшая - 5 полей и максимум 500 строк. По идее, можно перекачать ее в пять массивов и их разместить в сессии, а потом извлекать при необходимости. Но корректен ли такой прием?

  Ответить  
 
 автор: Valick   (16.12.2012 в 13:20)   письмо автору
 
   для: Владимир55   (16.12.2012 в 10:50)
 

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

  Ответить  
 
 автор: Владимир55   (16.12.2012 в 14:05)   письмо автору
 
   для: Valick   (16.12.2012 в 13:20)
 

Тут задача немного иная.

Вот менеджеру Иванову потребовался товар и он сделал запрос. Получил массив из пятисот строк и на страницах по десять строк листает его. Листать он может долго, а потому всю выборку для него надо где-то хранить все это время.

А тем временем Петрову понадобился другой товар и он сделал свой запрос и получил свой массив, который тоже будет листать минут десять.

Получается, что для каждого человека нужно свое хранилище. Таковым может быть сессия.

Так?

  Ответить  
 
 автор: cheops   (16.12.2012 в 14:38)   письмо автору
 
   для: Владимир55   (16.12.2012 в 14:05)
 

Результаты не нужно показывать поисковым роботам?
Для запроса требуется авторизация?

Дело в том, что сейчас существует масса механизмов, начиная с хранилища браузера, заканчивая NoSQL-базами данных и специализированными поисковыми серверами вроде Sphinx.

  Ответить  
 
 автор: Владимир55   (16.12.2012 в 16:53)   письмо автору
 
   для: cheops   (16.12.2012 в 14:38)
 

Авторизация не требуется, и индексация роботами запрещена. Как это может упростить дело?

(С учетом того, что это единственная операция, ради которой нет смысла заводить специальную базу или делать какие-то иные масштабные дополнения к серверным программам).

  Ответить  
 
 автор: Valick   (16.12.2012 в 17:09)   письмо автору
 
   для: Владимир55   (16.12.2012 в 16:53)
 

Авторизация не требуется
это наоборот несколько усложняет, но не делает невозможным

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования