Форумы портала PHP.SU » PHP » Программирование на PHP » Нужен совет

Страниц (1): [1]
 

1. Shtorm_sai - 10 Февраля, 2017 - 19:53:31 - перейти к сообщению
Доброго времени суток всем зашедшим сюда Улыбка
В общем вопрос следующий нужен скрипт который будет работать в фоне, проверять каждые 5 секунд наличие новых записей в БД и при условии, что они есть выполнять запрос по api к некоторым сервисам в порядке очереди, и в завсимости от ответа уже обновлять базу. Как лучше реализовать?

А ещё лучше если этот скрипт будет запускаться одним пользователем (первым), а остальные подключались бы к нему и вставали в очередь.)))
2. LIME - 10 Февраля, 2017 - 20:26:23 - перейти к сообщению
Самое простое Имхо тебе освоить очереди Редиса
Каждые 5мин? Тут надо подумать
Если хостинг то боль
Если свой сервак то тупо crontab -e
Короче могут быть нюансы
3. OrmaJever - 10 Февраля, 2017 - 20:48:50 - перейти к сообщению
5 секунд очень мало, я бы пустил это всё в цикл
PHP:
скопировать код в буфер обмена
  1. while( true ) {
  2.     // код
  3.     sleep(5);
  4. }

но вопрос как следить за тем что бы скрипт не упал? при каждой итерации писать текущее время в файл и проверять его хотя бы раз в час
4. Shtorm_sai - 10 Февраля, 2017 - 21:29:17 - перейти к сообщению
OrmaJever пишет:
5 секунд очень мало, я бы пустил это всё в цикл
PHP:
скопировать код в буфер обмена
  1. while( true ) {
  2.     // код
  3.     sleep(5);
  4. }

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


Ну это самый простой вариант, повешать в кроне ещё один скрипт на каждый час который будет монторить лог файл, и если запись последняя запись сделана давно отправлять предупреждение в виде смс или на почту. Вопрос в другом сколько этот скрипт памяти схвает?
5. OrmaJever - 10 Февраля, 2017 - 21:34:14 - перейти к сообщению
ну по идее не сколько, т.к в конце каждого цикла можно unset делать всему, но php дырявый, и из него память утекает, так что хрен его знает )
6. Shtorm_sai - 10 Февраля, 2017 - 21:39:07 - перейти к сообщению
LIME пишет:
Самое простое Имхо тебе освоить очереди Редиса
Каждые 5мин? Тут надо подумать
Если хостинг то боль
Если свой сервак то тупо crontab -e
Короче могут быть нюансы


Интересно. Почитаю про очереди. Была идея дать возможность php добавлять задание в крон, но решил отказаться из за соображения безопасности. Была идея запускать крон просто и проверять на присутствие флага, если разрешено то выполнять если нет то останавливать. Так как после первого запуска он может долго обрабатывать данные. Но факт в том, что мне нужно каждые 5 секунд, а не каждые 5 минут. Улыбка Плюс ко всему будет второй такой скрипт, первый будет проверять так скажем заявки на запрос к api и если api вернул нужный ответ, делать другую запись в бд и второй цикл который будет выполнять каждые 10 секунд и будет уже работать со второй базой. Причём думаю ещё использовать тригеры mysql
(Добавление)
OrmaJever пишет:
ну по идее не сколько, т.к в конце каждого цикла можно unset делать всему, но php дырявый, и из него память утекает, так что хрен его знает )

А если рекурсию? Запускать заново с сохранением данных и предыдущий убивать?
7. LIME - 10 Февраля, 2017 - 21:57:18 - перейти к сообщению
OrmaJever пишет:
но вопрос как следить за тем что бы скрипт не упал? при каждой итерации писать текущее время в файл и проверять его хотя бы раз в час
дальше тему не стал читать ибо уже припекло
Чувак открой для себя supervisor
От кого но от тебя не ожидал
Ты явно застоялся с местячковыми заказами
Подумай куда дальше расти
Не стой на месте
Не успакаивайся я тя прошу
(Добавление)
Прочитал все далее
По диагонале ибо не стоит читать внимательно
Охохошеньки
Итак
Shtorm_sai пишет:
Интересно. Почитаю про очереди.
нет
Не почитаю
А просто взял ....сел... и понял что за зверь
Это твое решение
Реализация на вкус ицветУлыбка
Главное однопоточность и очередь
Что из названия вытекает самособой но для понимающих это важно
......
Костыли?
Проверять и писать в файл?
Все уже придумано и сделано
Орма крутой кодер но его сила в реализации
По идеям он просто лошит...сколько его знаю....
Не слушай его совета в этом вопросе
(Добавление)
Рекурсий избегай
Пока не узнаешь алгоритмы и структуры данныз не делай рекурсий по возможности
Сильно легко можно получить много оверхеда
Тут можно целую дискуссию развернуть
Типа в контексте пхп итд итп
Короче....избегай если возможно
8. Shtorm_sai - 11 Февраля, 2017 - 06:29:10 - перейти к сообщению
LIME пишет:
OrmaJever пишет:
но вопрос как следить за тем что бы скрипт не упал? при каждой итерации писать текущее время в файл и проверять его хотя бы раз в час
дальше тему не стал читать ибо уже припекло
Чувак открой для себя supervisor
От кого но от тебя не ожидал
Ты явно застоялся с местячковыми заказами
Подумай куда дальше расти
Не стой на месте
Не успакаивайся я тя прошу
(Добавление)
Прочитал все далее
По диагонале ибо не стоит читать внимательно
Охохошеньки
Итак
Shtorm_sai пишет:
Интересно. Почитаю про очереди.
нет
Не почитаю
А просто взял ....сел... и понял что за зверь
Это твое решение
Реализация на вкус ицветУлыбка
Главное однопоточность и очередь
Что из названия вытекает самособой но для понимающих это важно
......
Костыли?
Проверять и писать в файл?
Все уже придумано и сделано
Орма крутой кодер но его сила в реализации
По идеям он просто лошит...сколько его знаю....
Не слушай его совета в этом вопросе
(Добавление)
Рекурсий избегай
Пока не узнаешь алгоритмы и структуры данныз не делай рекурсий по возможности
Сильно легко можно получить много оверхеда
Тут можно целую дискуссию развернуть
Типа в контексте пхп итд итп
Короче....избегай если возможно


Я php стал интересоваться лет 5 назад, потом просто забросил. И вот по необходимости вернулся к данному ремеслу. И столько новых штук!) Спасибо за информацию буду запиливать)
9. LIME - 11 Февраля, 2017 - 06:35:07 - перейти к сообщению
Вообще в пыхе последние 2 года все сильно сменилось
Но в контексте вопроса....нет
Орма простиУлыбка

 

Powered by ExBB FM 1.0 RC1