Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужен совет

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как лучше реализовать?
Shtorm_sai
Отправлено: 10 Февраля, 2017 - 19:53:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011  
Откуда: Новосибирск, Россия


Помог: 0 раз(а)




Доброго времени суток всем зашедшим сюда Улыбка
В общем вопрос следующий нужен скрипт который будет работать в фоне, проверять каждые 5 секунд наличие новых записей в БД и при условии, что они есть выполнять запрос по api к некоторым сервисам в порядке очереди, и в завсимости от ответа уже обновлять базу. Как лучше реализовать?

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

(Отредактировано автором: 10 Февраля, 2017 - 20:02:56)

 
 Top
LIME
Отправлено: 10 Февраля, 2017 - 20:26:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Самое простое Имхо тебе освоить очереди Редиса
Каждые 5мин? Тут надо подумать
Если хостинг то боль
Если свой сервак то тупо crontab -e
Короче могут быть нюансы
 
 Top
OrmaJever Модератор
Отправлено: 10 Февраля, 2017 - 20:48:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




5 секунд очень мало, я бы пустил это всё в цикл
PHP:
скопировать код в буфер обмена
  1. while( true ) {
  2.     // код
  3.     sleep(5);
  4. }

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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Shtorm_sai
Отправлено: 10 Февраля, 2017 - 21:29:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011  
Откуда: Новосибирск, Россия


Помог: 0 раз(а)




OrmaJever пишет:
5 секунд очень мало, я бы пустил это всё в цикл
PHP:
скопировать код в буфер обмена
  1. while( true ) {
  2.     // код
  3.     sleep(5);
  4. }

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


Ну это самый простой вариант, повешать в кроне ещё один скрипт на каждый час который будет монторить лог файл, и если запись последняя запись сделана давно отправлять предупреждение в виде смс или на почту. Вопрос в другом сколько этот скрипт памяти схвает?
 
 Top
OrmaJever Модератор
Отправлено: 10 Февраля, 2017 - 21:34:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Shtorm_sai
Отправлено: 10 Февраля, 2017 - 21:39:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011  
Откуда: Новосибирск, Россия


Помог: 0 раз(а)




LIME пишет:
Самое простое Имхо тебе освоить очереди Редиса
Каждые 5мин? Тут надо подумать
Если хостинг то боль
Если свой сервак то тупо crontab -e
Короче могут быть нюансы


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

А если рекурсию? Запускать заново с сохранением данных и предыдущий убивать?
 
 Top
LIME
Отправлено: 10 Февраля, 2017 - 21:57:18
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011  
Откуда: Новосибирск, Россия


Помог: 0 раз(а)




LIME пишет:
OrmaJever пишет:
но вопрос как следить за тем что бы скрипт не упал? при каждой итерации писать текущее время в файл и проверять его хотя бы раз в час
дальше тему не стал читать ибо уже припекло
Чувак открой для себя supervisor
От кого но от тебя не ожидал
Ты явно застоялся с местячковыми заказами
Подумай куда дальше расти
Не стой на месте
Не успакаивайся я тя прошу
(Добавление)
Прочитал все далее
По диагонале ибо не стоит читать внимательно
Охохошеньки
Итак
Shtorm_sai пишет:
Интересно. Почитаю про очереди.
нет
Не почитаю
А просто взял ....сел... и понял что за зверь
Это твое решение
Реализация на вкус ицветУлыбка
Главное однопоточность и очередь
Что из названия вытекает самособой но для понимающих это важно
......
Костыли?
Проверять и писать в файл?
Все уже придумано и сделано
Орма крутой кодер но его сила в реализации
По идеям он просто лошит...сколько его знаю....
Не слушай его совета в этом вопросе
(Добавление)
Рекурсий избегай
Пока не узнаешь алгоритмы и структуры данныз не делай рекурсий по возможности
Сильно легко можно получить много оверхеда
Тут можно целую дискуссию развернуть
Типа в контексте пхп итд итп
Короче....избегай если возможно


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


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Вообще в пыхе последние 2 года все сильно сменилось
Но в контексте вопроса....нет
Орма простиУлыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB