Jump to content
  • 0

Таймер на сервере.


Aroused
 Share

Question

Цель: Создание нескольких таймеров, которые будут по истечении времени изменять значение в табличке бд.

Условие: По запросу клиента будет отображаться время ожидания этих заданий.

Вопрос#1: Погуглил, и запутался, есть какой-то cron, всякие возможности с mysql5.1, прошу вашего совета, как лучше это реализовать?

Вопрос#2: Если подобных заданий будет около 25 может ли это сильно напрягать сервер? :blush:

Слышал что MySQL Event Scheduler может убить базу если врдруг что-то сделать не так или одновременно выполнить несколько задач.

Заранее спасибо :)

ps. я вообще не знаю perl :blush:

Edited by Aroused
Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

Мне необходимо серверное решение, т.к. процесс не должен зависеть от клиента.

а что вас так пугает?

думаете что выполнение сценариев может быть отключено?

я вас умоляю... :) сейчас мало кто выключает js в браузере, так как в первую очередь страдает сам.

З.Ы.:

Вопрос#2: Если подобных заданий будет около 25 может ли это сильно напрягать сервер? :blush:

что под этим имелось ввиду?

кол-во одновременных запросов к мускулу вроде как неограниченно...

Link to comment
Share on other sites

  • 0
думаете что выполнение сценариев может быть отключено?

Я еще раз говорю, мне нужно серверное решение.

Задание должен инициировать сервер потому что:

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

сессия не должна прерываться когда клиент закрыл страницу (nonStop так сказать);

вешать на клиента любое изменение бд в моем случае не приемлемо.

Вопрос#2: Если подобных заданий будет около 25 может ли это сильно напрягать сервер?

Я про таймеры на серве. Ну к примеру взять тот-же MySQL Event Scheduler, понятно что он использует ресурсы gpu. Но вот на счет нагрузки не понятно.

Edited by Aroused
Link to comment
Share on other sites

  • 0

Я еще раз говорю, мне нужно серверное решение.

не вопрос - делайте, мне тут нечего добавить.

Задание должен инициировать сервер потому что:

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

Условие: По запросу клиента будет отображаться время ожидания этих заданий.

это как понимать? то клиент, то сервер..., вы уж опредилитесь что ли, или опишите точнее...

сессия не должна прерываться когда клиент закрыл страницу (nonStop так сказать);

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

вешать на клиента любое изменение бд в моем случае не приемлемо.

опять 25! что вы вешаете на клиента? описывайте тогда свою задачу подробнее во избежании "воды" и флуда! :devil:

З.Ы. Event Scheduler несомненно будет нагружать mysql сервер, и поэтому нужно будет скорее всего брать vds + Event Scheduler поддержка начинается с версии 5+ да и не на всех хостингах есть его поддержка, но если его использовать, то крон имхо уже не нужен будет.

Link to comment
Share on other sites

  • 0

Мне самому проще найти решение. Временем на

"воды" и флуда!
не распологаю. Как сделаю, сюда же отпишу.

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

По запросу клиента будет отображаться время ожидания этих заданий.

Проще обьяснить не возможно - только сделать и показать.

ну так и не разрывайте ее, вы же программист?

Жгете +)

опять 25! что вы вешаете на клиента? =>>

копайте в сторону всяких ajax, jquery, js и т.д... ф-ция settimeout();

Я тут не при чем :D

Edited by Aroused
Link to comment
Share on other sites

  • 0

интересный диалог :D

Но возник отвлечённый вопрос... А что должны выполнять таймеры КОНКРЕТНО? Может решение намного проще..

ps

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

  • Like 1
Link to comment
Share on other sites

  • 0

:dash::dash::dash:
А что должны выполнять таймеры КОНКРЕТНО? Может решение намного проще..

VVVV

Цель: Создание нескольких таймеров, которые будут по истечении времени изменять значения в табличке бд.

Есть *НЕЧТО* на сервере, что побуждает изменить значение в табличке через определенный период времени. Единственное что может клиент, это узнать сколько времени осталось до конца таймера так скажем. Клиент ничего друго не делает.

если у клиента, то сессия закончится с закрытием браузера (или раньше), если серверное - то как решит программист

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

Aroused, ты действительно путаешь серверное и клиентское..

Что тут можно путать? Есть клиентские языки, есть серверные. Они выполняются соответственно определению. Ни слова по делу не сказанно.

Закройте нахрен тему.

Edited by Aroused
Link to comment
Share on other sites

  • 0

всё равно ты так и не спросил что нужно.. Просто запрос запросу рознь.. Хоть бы один пример привёл.. Только можно гадать :)

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

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

Aroused, позвольте пару вопросов наводящих:

1. *НЕЧТО* должно происходить в который(-ые) момент(-ы) времени?

2. каким образом это происшествие зависит от действий клиента?

ЗЫ: Подозреваю что вам нужен cron+ajax...

Link to comment
Share on other sites

  • 0

Цель: Создание нескольких таймеров, которые будут по истечении времени изменять значение в табличке бд.

Условие: По запросу клиента будет отображаться время ожидания этих заданий.

Вопрос#1: Погуглил, и запутался, есть какой-то cron, всякие возможности с mysql5.1, прошу вашего совета, как лучше это реализовать?

Реализуйте через cron (cron - планировщик задачь, это я для того уточнил, что нужен будет скрипт который будет запускаться по расписанию)

Вопрос#2: Если подобных заданий будет около 25 может ли это сильно напрягать сервер? :blush:

Всё зависит от сложности задания и их частоты.

ps. я вообще не знаю perl :blush:

В этом наверно и проблема, раздел не о перле, не о питоне, не о руби, а о PHP.

ЗЫ: Подозреваю что вам нужен cron+ajax...

AJAX не нужен, у ТС написано что таблица БД, а не html.

  • Like 1
Link to comment
Share on other sites

  • 0

AJAX не нужен, у ТС написано что таблица БД, а не html.

сбивает с толку

Условие: По запросу клиента будет отображаться время ожидания этих заданий.

может вы и правы, лишнее.

да, ТС, однозначно провоцирует нас к телепатству))

перечитав всё ещё раз, я так понимаю алгоритм:

1. пользователь инициализирует действие, которое должно будет произойти спустя n-времени

2. в любой момент ему надо предоставить отчёт, сколько ещё времени осталось, без привязки к сессии и проч.

3. по наступлению момента X, должен наступить конец света сработать этот самый таймер

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

Edited by Быколай
Link to comment
Share on other sites

  • 0

Ох и темка получилась :D

Весь замес из-за таймеров. Просто опишу к чему я пришел.

И так, нам нужно средство планировки задачь в базе. Видимых мне способов было 2, Cron и MySQL Event Scheduler. Ни с тем, ни с другим я не был знаком. Потому пришлось выбирать. Я остановился на MySQL Event Scheduler. Нашел мануал, увидел сколько читать, испугался и закрыл. Заглянул в навикат (пока это моя любимая альтернатива myPhpAdmin). И о'Чудо, там реализованна поддержка MySQL Event Scheduler! Быстренько создал задачу(граф. интерфейс не обязывал рыться в мануалах). И задача сработала! Нужно было создать табличку(для теста). Но я всё же хотел понять как навикат это всё реализовал. Смотрю лог. >


CREATE EVENT `some` // тут всё очевидно
ON SCHEDULE AT '2012-01-17 04:35:07' // время срабатывания
ON COMPLETION PRESERVE DISABLE // типа не удалять эвент после срабатывания
DO // что собственно нужно сделать
CREATE TABLE IF NOT EXISTS `sometbl` (`somecolumn` INT(1) NOT NULL AUTO_INCREMENT PRIMARY KEY)

И всё бы хорошо, только как мне узнавать время до вызова?? Сильно расстроился и подумал что всё, буду разбираться с кроном.

Случайно зашел в базу которая устанавливается вместе с MySql(information_schema) и увидел таблицу `EVENTS`!!! Там то и были все данные(START, END, etc..)

Дальше всё очевидно по запросу в mysql TIMESTAMPDIFF - клиент получает оставшееся время по средством php. :yahoo:

Всем спасибо!

Edited by Aroused
Link to comment
Share on other sites

  • 0

не понимаю ваших действий, за пару секунд нашел тут же кучу инфы в нете, вот тут например.

:dash: век живи, век учись. я эту тему не курил ещё, спасибо.

Link to comment
Share on other sites

  • 0

не понимаю ваших действий, за пару секунд нашел тут же кучу инфы в нете, вот тут например.

:dash: век живи, век учись. я эту тему не курил ещё, спасибо.

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

Link to comment
Share on other sites

  • 0
я тоже не курил, но как мне кажется

rus, Вы очень много пишите, и представляете ценность для форума, несомненно. Я не могу вам запретить, но хочу попросить впредь, не отвечать на мои вопросы на форуме. :)

Edited by Aroused
Link to comment
Share on other sites

  • 0
Лошара, Вы очень много пишите, и представляете ценность для форума, несомненно. Я не могу вам запретить, но хочу попросить впредь, не отвечать на мои вопросы на форуме
А можно чуть пояснить? Это просто очередные разборки или Aroused, ты не согласен что такой способ будет создавать дополнительную нагрузку? Мне лично это стало интересным что менее затратно, а что удобнее.
Link to comment
Share on other sites

  • 0
я тоже не курил, но как мне кажется

Лошара, Вы очень много пишите, и представляете ценность для форума, несомненно. Я не могу вам запретить, но хочу попросить впредь, не отвечать на мои вопросы на форуме. :)

ну что тут можно ответить, у меня нет слов просто :D

нет проблем, отвечать не буду...

P.S. мой ник - rus если че ;)

Link to comment
Share on other sites

  • 0

разборки или...

А можно чуть пояснить?

Чуть что сразу разборки :D

Я же не говорю "Эй ты, не пиши в моем топике." нагло. Просто есть вещи которые трудно обьяснить, это не по тематике форума, если начну, то будет оффтоп на пару мегабайт.

Мне лично это стало интересным

:blink: Просто не так выразился видимо. Я говорил именно про мои вопросы, не в коем случае про топик.

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

нет проблем, мой ник - rus если че ;)

:lol: Блин, без обид. Просто смотрю написанно так. исправлю.

Edited by Aroused
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy