[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как давно не посылается ajax запрос?
9xakep
Цепочка такая:
юзер >>ajax каждые 30секунд >> server ---добавление к БД определенной информации <задача>
Задача:
как сделать так, что бы если ajax запрос не посылал условно более 5 минут, то в БД послыается другая инфа, то есть, когда юзер уйдет, аякс перестанет отсылаться, и тогда через 5 минут в БД определенное значение меняется, возможно такое?



Спустя 5 минут, 5 секунд (11.05.2012 - 22:33) redreem написал(а):
как вариант - предполагать что присланное было последним, делать все нужные для этого вещи, а если придет всетаки через 30 сек еще запрос - корректировать сделанное ранее smile.gif согласен - на 1 запрос больше каждый раз, зато без всяких кронов и сложных логических схем.

Спустя 12 минут, 30 секунд (11.05.2012 - 22:45) sergeiss написал(а):
Цитата (redreem @ 11.05.2012 - 22:33)
как вариант - предполагать что присланное было последним

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

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

Спустя 10 минут, 16 секунд (11.05.2012 - 22:55) 9xakep написал(а):
redreem,не совсем понял, то есть я буду отправлять запрос на page.php, принцип которой:
1) добавить то, что надо
2) и сразу же запустить таймер
Тогда такой вопрос, когда я отправлю этот самый запрос, и запускаю таймер, он будет нормально исполняться? Не остановиться? Поскольку я же не буду находиться на самой этой странице?
sergeiss, что за демон?) Можно по конкретнее? Сложно сделать этого "демона" user posted image

Спустя 3 минуты, 54 секунды (11.05.2012 - 22:59) inpost написал(а):
9xakep
Только не говори, что ты пытаешься придумать алгоритм он-лайн smile.gif Потому что ты заведомо неправильно уже мыслишь.
Ну да ладно. Порой лучше сказать то, что хочешь добиться.

Спустя 44 минуты, 1 секунда (11.05.2012 - 23:43) sergeiss написал(а):
Цитата (9xakep @ 11.05.2012 - 22:55)
sergeiss, что за демон?) Можно по конкретнее? Сложно сделать этого "демона"

"Демоном" называют серверную прогу, которая крутится постоянно и что-то делает. По сути, это просто обычная "служба".

Вот только использование аякса, тем более совместно с БД, вряд ли будет рациональным таким образом, как ты описал.

Подумай над тем, что redreem написал. Давай я поясню на примере некой аналогии smile.gif Вот едет автобус. Останавливается на каждой остановке. Там люди могут зайти, а могут и не зайти. Могут выйти, а могут и не выйти. Но автобус останавливается все равно. Потому что положено ему. Допустим, что между остановками у него проходит 30 секунд.
Если кто-то зашел, то он платит кондуктору за проезд. Но если никто не зашел, то кондуктор не переживает, не ждет ничего smile.gif Он находится в режиме ожидания. Если автобус вдруг прекратил движение (пробка на дороге, авария/поломка автобуса и т.д.), то уже каждые 30 секунд нету остановок. Но кондуктору пофиг! Его дело - получать деньги за проезд, но только тогда, когда пассажиры зашли на очередной остановке. И он не будет нисколько ждать поступления новых денег, никаких 5 минут. Потому что новых пассажиров нету по причине остановки автобуса.

Так понятнее?

Спустя 15 часов, 4 минуты, 33 секунды (12.05.2012 - 14:48) 9xakep написал(а):
inpost, да это и делаю) Но сейчас уже немного другая идея появилась) Ее попробую осущетсвить, ктстаи когда думал над идей, тоже была идея с "демоном", только я назвал это ботом) Который постоянно будет в онлайне) Правда я не знаю, возможно ли будет это создать с моим хостингом. То что
sergeiss описал, это все хорошо и легко решается, опять же этаким "ботом", хотя разницы я между ними не вижу)

Спустя 6 минут, 26 секунд (12.05.2012 - 14:54) 9xakep написал(а):
Остался только вопрос, как сделать демона, который будет сам по себе всегда работать? Можете статейки кинуть, а то в гугле одни боты для icq и кс итд

Спустя 18 минут, 44 секунды (12.05.2012 - 15:13) inpost написал(а):
9xakep
Для он-лайна - дергай запрос по времени: WHERE `date` > NOW() - INTERVAL 10 MINUTE , всё, теперь будут у тебя все юзеры, которые были активны последние 10 минут.

Спустя 14 минут, 42 секунды (12.05.2012 - 15:28) minor написал(а):
Когда то писал проверку онлайна для пользователей, делал просто заводил в бд ячейку под теймштамп (или в кеш) а по переходу юзера по страницам сайта обновлял её, дальше проверял где нужно было. Если нужно что то посложнее то наверно помогут сокеты.

Спустя 1 час, 55 минут, 40 секунд (12.05.2012 - 17:23) 9xakep написал(а):
inpost, блин...вот оно какое решение)
И все же, вопрос, как можно было бы создать бота? Который был бы всегда в онлайн?

Спустя 42 секунды (12.05.2012 - 17:24) 9xakep написал(а):
minor, ок, спасибо, соединю идеи


Спустя 7 часов, 40 минут, 6 секунд (13.05.2012 - 01:04) sergeiss написал(а):
Цитата (9xakep @ 12.05.2012 - 17:23)
И все же, вопрос, как можно было бы создать бота? Который был бы всегда в онлайн?

Не сложно. Делаешь скрипт (на ПХП), который работает без ограничения времени. Запускаешь его. У него внутри есть некий "бесконечный" цикл, который выполняет определенную работу.

На случай падения (или планового выключения) скрипта можно сделать защиту. Вариант не единственный, я просто предлагаю один из вариантов smile.gif
Итак, для начала фиксируем время последнего выполнения каких-либо действий. Например, перезаписываем некий файл. К нему не будет одновременного обращения (на запись) со стороны разных скриптов, поэтому проблемы с файлом не будет.
А далее по крону (в винде - "плановые задачи"), допустим, раз в 15 минут, запускаем этот же скрипт. Но он сначала, сразу же после запуска - обязательно!!! - лезет в уже упоминавшийся файл и оценивает, когда была выполнена последняя работа. Если недавно, например, менее 10 минут тому назад, то тогда скрипт завершает работу. Если более 10 минут, то делается предположение, что прежний скрипт был выключен по любой причине, не важно по какой.

Естественно, время 10-15 минут достаточно абстрактное, можно взять любое, исходя из своих задач. Самое главное, что в итоге получаем некий аналог виндовой "службы", которая обладает способностью самовосстановления.

На самом деле, такую хрень я сам собрался делать, после отпуска планирую реализовать smile.gif Потому и описываю подробно. По сути, как сам буду делать.

Спустя 22 минуты, 32 секунды (13.05.2012 - 01:27) inpost написал(а):
sergeiss
Мне кажется, что тут имеет место быть утечке памяти, в таком случае.
Я бы лучше давал время жизни такому боту, который через 1 час вырубался. А кроном нового запускал.

9xakep
Хостеры не позволяют работать скриптам и 5-и минут. Только свои собственные сервера - альтернатива. В противном случае скрипт будет автоматически убиваться.

Спустя 18 минут, 52 секунды (13.05.2012 - 01:46) sergeiss написал(а):
Цитата (inpost @ 13.05.2012 - 01:27)
Мне кажется, что тут имеет место быть утечке памяти, в таком случае.

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.