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

Форум PHP

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

 

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

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

тема: Как оптимально ждать появления записи в базе данных?
 
 автор: Sturmvogel   (24.03.2010 в 13:56)   письмо автору
 
 

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

Пока обдумываю только вариант, чтобы каждую секунду опрашивать какое-то поле строки (например, время последнего добавления или еще чего) и сравнивать с последним значением, которое есть у пользователя. Если они разнятся, то подгружать из базы нужную информацию.

Но насколько я знаю, чем меньше запросов к базе данных будет, тем лучше. Поэтому и вопрос, как лучше всего это реализовать? Чтобы не нагружать при этом особо базу данных, чтобы не было тормозов.

Заранее спасибо.

  Ответить  
 
 автор: GeorgeIV   (24.03.2010 в 14:08)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 13:56)
 

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

  Ответить  
 
 автор: Sturmvogel   (24.03.2010 в 15:22)   письмо автору
 
   для: GeorgeIV   (24.03.2010 в 14:08)
 

Ну, у меня есть несколько пользователей, которые ждут действий от другого...
Как мне дернуть их скрипты скриптом, который добавляет? Честно говоря, с моими знаниями, я не представляю как))

  Ответить  
 
 автор: GeorgeIV   (24.03.2010 в 15:34)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 15:22)
 

отправить запрос с нужными параметрами

  Ответить  
 
 автор: Sturmvogel   (24.03.2010 в 16:48)   письмо автору
 
   для: GeorgeIV   (24.03.2010 в 15:34)
 

Ну вот у меня пользователи сидят и ждут ответа на одной странице. Ждут ответа от Ajax-скрипта, скажем, answer.ajax.php...

Пускай они ждут меня. Я добавляю свою запись в базу данных через скрипт answer.ajax.php... Вот как мне как раз передать эти параметры, что нужно запросить в базу данных, всем пользователям, которые ждут.. Вот я этого, простите, не пойму. Точнее, не знаю как сделать...

  Ответить  
 
 автор: GeorgeIV   (24.03.2010 в 17:46)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 16:48)
 

Что значит "ждут", сколько могут ждать?
Если идут аякс-запросы к скрипту и не было вставки, можно просто возвращать пустой ответ, а если была вставка - ID вставленной записи, например

  Ответить  
 
 автор: Trianon   (24.03.2010 в 20:52)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 16:48)
 

У Вас путается событийная связь.
Ждать по http-протоколу можно единственным образом.
Испуская периодические запросы, а затем читая и интерпретируя ответ сервера.
Значит первое, с чем Вы должны определиться - интервал времени, с которым разумно проверять наступление события.

  Ответить  
 
 автор: Sturmvogel   (24.03.2010 в 23:00)   письмо автору
 
   для: Trianon   (24.03.2010 в 20:52)
 

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

Например, как в какой-нибудь игре. У нас есть время на ход (к примеру, 30 секунд), а игроки ждут, когда походит текущий игрок... После этого ход переходит к другому. Поэтому и хочу проверять каждую секунду, сменился ли ход.

  Ответить  
 
 автор: sasha1133   (26.03.2010 в 03:24)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 23:00)
 

было бы лучше всего как то реализовать такую схему: чел добавляет сообщение, скрипт пишет его в базу и в тоже время выдаёт эту же запись пользователям (только 1 запрос к базе на запись и только в нужное время). Но проблема вот в чём: возможно ли сделать такой механизм, чтобы страница, загруженная браузером, ждала ответа от скрипта неопределённое (хотя бы достаточно долгое) время, но как только скрипт ответил, сразу выдавать сообщение?

  Ответить  
 
 автор: Trianon   (26.03.2010 в 03:52)   письмо автору
 
   для: sasha1133   (26.03.2010 в 03:24)
 

>Но проблема вот в чём: возможно ли сделать такой механизм, чтобы страница, загруженная браузером, ждала ответа от скрипта неопределённое (хотя бы достаточно долгое) время, но как только скрипт ответил, сразу выдавать сообщение?

Практически нет. И если бы Вы изучили протокол HTTP (RFC-2616), такая проблема не получила бы шанса быть озвученной.

  Ответить  
 
 автор: sasha1133   (26.03.2010 в 13:01)   письмо автору
 
   для: Trianon   (26.03.2010 в 03:52)
 

>Практически нет. И если бы Вы изучили протокол HTTP (RFC-2616), такая проблема не получила бы шанса быть озвученной.

Мне кажется что тут теоретически можно что придумать. Ведь есть же состояние, когда уже загруженная страничка ждёт ответа от серверного скрипта? Так а если она будет постоянно ожидать ответа? Я пока мало знаком с Ajax, но мне почему то кажется, что это возможно.

  Ответить  
 
 автор: Trianon   (26.03.2010 в 17:02)   письмо автору
 
   для: sasha1133   (26.03.2010 в 13:01)
 

Она не станет постоянно ждать ответа потому, что существует ограничение таймаута на процесс такого ожидания.

  Ответить  
 
 автор: GeorgeIV   (26.03.2010 в 10:18)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 23:00)
 

Каждую секунду нереально

  Ответить  
 
 автор: Xamlo   (26.03.2010 в 10:40)   письмо автору
1.5 Мб
 
   для: GeorgeIV   (26.03.2010 в 10:18)
 

Вообще так.Я создаю базу данных для сайта на http://localhost/Tools/phpMyAdmin/ вроде бы всё нормально,только вот в директории на моём серваке не создаются папки _notes :(
Сначала вроде бы создавались когда я только учился,я их потом удалил с директории.Теперь они вообще не создаются!!!
P.S.Denwer restar-тил.не помогает,даже папки в директории создавал!Помогите пожалуйста! isq 551105763Или посмотрите что не так в моей директории!?

  Ответить  
 
 автор: Sturmvogel   (03.04.2010 в 01:34)   письмо автору
 
   для: Sturmvogel   (24.03.2010 в 13:56)
 

А можно ли вообще как-то обращаться всем пользователям к определенному объекту класса? если туда прописывать какой-то флаг в свойствах, который будет указывать, нужно ли читать из базы или нет...

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

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