Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 08:37   #1
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию БД_перезапись_с_Т1_в_Т2

Здравствуйте.
Имеется: Допустим у меня есть таблица_1 в которой автоматически создаются поля (каждые 30сек ± 5сек) "id" "date" "randon_number. Рhp-скрипт, запускаемый с помощью крон каждые 30сек ± 5сек, записывает в таблица_2 "random_number_min" и "random_number_max" блоками по 10мин. Т.е. каждые 30сек сверяет с предыдущим числом и записывает или в поле с минимальным или с максимальным значением.
Задача: Проблема возникает на этапе создания таблица_2. Как сделать так, чтобы в течение 10мин код сравнивал данные между собой, записывал их в свои поля, а после истечении 10мин удаляла эти поля и записывала только одно поле с min и max значениями. И главное, чтобы по истечении 10мин код не начинал сначала обрабатывать старые данные.
Направьте меня хотя бы в нужном пути, а то я просто не понимаю как это реализовать. Спасибо.
Parallelogram вне форума Ответить с цитированием
Старый 05.05.2014, 09:04   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Чет ваще странно как то. Но я бы делал так :
В первую таблицу добавил поле типа timestamp - дата ивремя записи значения
Во второй таблице также еще поле обозначающего начало 10 минутного блока
Второй крон раз в 10 минут, делаем запрос На выборку мин и макс с условием на то что время в первой таблице входит в диапазон время из второй табл из посл записи плюс 10 мин до то же время плюс 20, значение получ записываем в табл2,
ADSoft вне форума Ответить с цитированием
Старый 05.05.2014, 10:00   #3
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

Первое: В том то и дело, что крон выполняется не всегда, как в первом так и во втором скрипте. Тогда получится так, что крон, который срабатывает каждые 10мин может пропустить целый блок. Поэтому я и хотел, чтобы проверка сравнение чисел происходило каждые 30сек (чтобы уменьшить влияние невыполнение скрипта).
И второе: Крон должен срабатывать не каждые 10мин, а каждые 9мин (каждые 3 часа цикл мин обнуляется и начинает заново, изменяются только часы). Тоже не знаю как сделать.
Parallelogram вне форума Ответить с цитированием
Старый 05.05.2014, 10:06   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

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

русскими словами объяснить задачу можете?
eval вне форума Ответить с цитированием
Старый 05.05.2014, 10:13   #5
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

В базе должны храниться и добавляться результаты min и max, каждых ДЕВЯТИ минут. И ничего кроме этого там не должно быть. А браться они должны из таблицы которая постоянно обновляется и дополняется (каждые 30сек). Так понятно?

Последний раз редактировалось Parallelogram; 05.05.2014 в 10:27.
Parallelogram вне форума Ответить с цитированием
Старый 05.05.2014, 10:32   #6
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

Т.к. скрипт работает не постоянно/не все время, а запускается каждые 30сек, то и данные сравнения чисел должны где-то хранится. Идея была хранить в каком-н файле (но по файлу сложно искать) или БД (но и таблицы не хотелось бы плодить). Я решил что в БД будет проще, да и вес файла впоследствии будет весить не один десяток метров.
Parallelogram вне форума Ответить с цитированием
Старый 05.05.2014, 10:52   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
В базе должны храниться и добавляться результаты min и max, каждых ДЕВЯТИ минут. И ничего кроме этого там не должно быть. А браться они должны из таблицы которая постоянно обновляется и дополняется (каждые 30сек). Так понятно?
делаете запрос на группировку, результаты вносите в таблицу... так и проблема в чем?
eval вне форума Ответить с цитированием
Старый 05.05.2014, 11:48   #8
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию

Давайте я еще раз попытаюсь объяснить на каких моментах у меня происходят проблемы.
Первый скрипт срабатывает и записывает в Табл1: время и рандомное число. Второй скрипт должен сравнивать это число с предыдущим и записывать его (в зависимости от значения) в Табл2 в поля: min и max. Через 30сек срабатывает опять первый скрипт, который генерирует новое число и записывает его в Табл1. Запускается второй скрипт и опять сравнивает с предыдущим и опять заносит в свое поле в Табл2. Это все будет продолжаться до тех пор, пока не стукнет 09мин 00сек. Тогда первый скрипт все также запишет в Табл1 рандомные числа. Но вот второй скрипт перестанет записывать данные по первым девяти минутам в поле Табл2, а начнет новые сравнения уже начиная с нового числа. А значения с предыдущей "девятки" занесет в поле id_1: date, min, max.
Как и где производить группировку? Как заставить понять, что предыдущие 9мин закончились и их не нужно обрабатывать?
Parallelogram вне форума Ответить с цитированием
Старый 05.05.2014, 12:32   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Честно говоря задачу не понял, но могу предположить, а триггер на первую таблицу вам не подойдет?
Cronos20 вне форума Ответить с цитированием
Старый 05.05.2014, 13:59   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Как и где производить группировку?
в запросе вестимо
Цитата:
Как заставить понять, что предыдущие 9мин закончились и их не нужно обрабатывать?
сейчас минус предыдущее больше или равно 9 минут
в чем вопрос то?
Цитата:
Честно говоря задачу не понял
не вы первый пока никто не понимает
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц