Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ожидание данных 
:(
    Опции темы
admsasha
Дата 16.3.2020, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Требуется написать демон, который будет считывать данные с базы и производить определенные действия. Каким образом можно узнать, что в базе есть новые строки не делая ежесекундно запросы типа "select .. where checked=1" ? Использую DBI (mysql). В базу данные попадают через CGI скрипт (с сайта) который находится на том же сервере, что и данный демон.
PM MAIL WWW ICQ Jabber   Вверх
arto
Дата 16.3.2020, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а какую задачу вы хотите решить таким образом?
PM MAIL ICQ   Вверх
Bulat
Дата 16.3.2020, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(admsasha @  16.3.2020,  11:32 Найти цитируемый пост)
 Каким образом можно узнать, что в базе есть новые строки не делая ежесекундно запросы типа "select .. where checked=1"

Не делая ежесекундно запросы вообще или не делаю запросы ежесекундно типа "..." ?


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
admsasha
Дата 17.3.2020, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(Bulat @  16.3.2020,  23:05 Найти цитируемый пост)
Не делая ежесекундно запросы вообще или не делаю запросы ежесекундно типа "..." ?
 Не делая ежесекундно запросы вообще. Например, если бы я написал на c++ и всё это было в одном процессе, но в разных потоках, я бы использовал std::condition_variable и это бы решило мою задачу (не знаю на сколько понятен мой пример). А тут разные процессы.

Добавлено через 1 минуту и 11 секунд
Цитата(arto @  16.3.2020,  22:51 Найти цитируемый пост)
а какую задачу вы хотите решить таким образом?
 Не понял вопроса. Не тыркать базу лишний раз, не нагружать CPU ненужными запросами.

PM MAIL WWW ICQ Jabber   Вверх
Bulat
Дата 17.3.2020, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(admsasha @  16.3.2020,  11:32 Найти цитируемый пост)
 который будет считывать данные с базы и .... не делая ежесекундно запросы


Вот мне самому интересно, как считывать данные с базы, не делая туда запросы?  smile 



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
admsasha
Дата 17.3.2020, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(Bulat @  17.3.2020,  15:08 Найти цитируемый пост)
Вот мне самому интересно, как считывать данные с базы, не делая туда запросы?   

Вопрос не в том, чтобы вообще не делать, а не делать их постоянно. Как бы ожидать сигнала от второго скрипта, который скажет, что в базу данные поступили, можешь считывать их.
PM MAIL WWW ICQ Jabber   Вверх
Bulat
Дата 17.3.2020, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(admsasha @  17.3.2020,  09:18 Найти цитируемый пост)
Вопрос не в том, чтобы вообще не делать, а не делать их постоянно. Как бы ожидать сигнала от второго скрипта, который скажет, что в базу данные поступили, можешь считывать их.


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

Мне кажется тут надо саму архитектуру проекта пересмотреть и не "изобретать велосипед"..  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
admsasha
Дата 17.3.2020, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(Bulat @  17.3.2020,  16:24 Найти цитируемый пост)
 А если у тебя второй скрипт сам будет почти ежесекундно кидать данные в базу?
 Значит ежесекундно читать базу. В реальности это будет происходить раз в 30-60 минут. Но обработка нужна сразу.

Добавлено через 29 секунд
Цитата(Bulat @  17.3.2020,  16:24 Найти цитируемый пост)
и не "изобретать велосипед"..  
 Поэтому я и задал вопрос

Добавлено через 3 минуты и 5 секунд
Цитата(Bulat @  17.3.2020,  16:24 Найти цитируемый пост)
Сообщения между двумя скриптами - можно и через сокеты и даже через те же сигналы попробовать..
 Ну вот это уже ближе

PM MAIL WWW ICQ Jabber   Вверх
Bulat
Дата 17.3.2020, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(admsasha @  17.3.2020,  10:04 Найти цитируемый пост)
Значит ежесекундно читать базу. В реальности это будет происходить раз в 30-60 минут. Но обработка нужна сразу.

Ну так скрипт, который записывает данные в базу, сам запускает скрипт, который эти данные считывает, не делая регулярных запросов!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
admsasha
Дата 17.3.2020, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(Bulat @  17.3.2020,  17:09 Найти цитируемый пост)
Ну так скрипт, который записывает данные в базу, сам запускает скрипт, который эти данные считывает, не делая регулярных запросов!
 это CGI скрипт, он должен быстро отдать ответ, что "запрос принят". А дальше идет уже реальная работа

PM MAIL WWW ICQ Jabber   Вверх
Bulat
Дата 17.3.2020, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(admsasha @  17.3.2020,  10:25 Найти цитируемый пост)
 это CGI скрипт, он должен быстро отдать ответ, что "запрос принят". А дальше идет уже реальная работа


Тогда CGi-скрипт раз в 30-60 минут запускает скрипт, который записывает данные в базу - если работа скрипта завершена без ошибок - то считаем, что данные успешно записаны и быстро отдаем ответ!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
alezzz
Дата 17.3.2020, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



admsasha, держи в memcached ключ "есть/нет данные", читай его ежесекундно, если архитектура сложно меняется.
PM MAIL   Вверх
Bulat
Дата 17.3.2020, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(alezzz @  17.3.2020,  12:16 Найти цитируемый пост)
держи в memcached ключ "есть/нет данные"

Так сложно  smile а не проще тогда будет просто файл создавать? Есть данные - "не пустой" файл, нет данных - файл с размером 0 байт. Частота проверки размера файла - гораздо выше, нежели остальные способы, там в секунду больше одного раза можно проверить  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
alezzz
Дата 17.3.2020, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



Не, файл - это обращение к диску, мне спокойнее к памяти обращаться.

Добавлено через 8 минут
хотя... если что-то простое, не сильно замороченое, то можно и файле флаг держать
PM MAIL   Вверх
Bulat
Дата 17.3.2020, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(alezzz @  17.3.2020,  15:34 Найти цитируемый пост)
хотя... если что-то простое, не сильно замороченое, то можно и файле флаг держать

в memcached у тебя ключи, значения и т.п. А мой способ - это даже не "флаг в файле", а "свойство файла как флаг". Есть данные - файл с размером 1 байт, нет данных(по умолчанию) файл с размером 0 байт. Причем для определения свойства совсем не обязательно "открывать" данный файл(хэндл и все такое) - достаточно считать размер файла специальной функцией из файловой системы...

memcached еще надо устанавливать и т.п. А здесь все готовое - pure perl


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1561 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.