Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как лучше организовать запуск PHP скриптов.
цитата
01/12/15 в 15:11
 Lexikon
Есть несколько задач:
1. Ежесуточное формирование файла статистики.
2. Создание и добавление новости из файла дампа каждый час.
3. Каждые пять минут отслеживать некие изменения.
И тут задался вопросом, дергать каждую из этих функций отдельным кроном либо дергать кроном каждые 5 минут, а в зависимости от меток в отдельных файлах, запускать все остальное.

Т.е. к примеру в сутках 1440 минут или 288 раз по 5 минут и 12 раз в часе.
Соответственно в каждом файле после запуска уменьшать значение на единицу и когда = 0 тогда записывать в файл максимальное значение и запускать скрипт.

Подскажите, как лучше.

И если кол-во задач увеличиться до 10.

Спасибо!
цитата
01/12/15 в 16:47
 Ailk
использовать очереди собщений. RabbitMQ и совместно Celery, ну это продвинутый вариант.
Вариант попроще - Gearman
цитата
01/12/15 в 17:10
 fil
А если по старинке запускать кроном каждые 5 минут. Делать что надо. И в самом скрипте проверять, если минуты=0 - делать ежечасную работу, если часы=0 и минуты=0 - ежесуточную.
цитата
01/12/15 в 18:13
 rickdeckard
у вас же три задачи с разными промежутками времени
каждый день
каждый час
каждые пять минут

вот и поставьте на крон отдельные задачи и не забивайте голову ерундой.
цитата
01/12/15 в 18:53
 Stek
Поставить в крон задания и не ломать себе голову. Чем проще, тем надежнее.
По заданию в файл делай.
цитата
01/12/15 в 23:22
 Mika
Ailk писал:
использовать очереди собщений. RabbitMQ и совместно Celery, ну это продвинутый вариант.
Вариант попроще - Gearman

Ставить под такую задачу RabbitMQ с Celery - это извращение покруче стрельбы из пушки по воробьям.
+1 за повесить задания на крон.

Lexikon писал:
Т.е. к примеру в сутках 1440 минут или 288 раз по 5 минут и 12 раз в часе.
Соответственно в каждом файле после запуска уменьшать значение на единицу и когда = 0 тогда записывать в файл максимальное значение и запускать скрипт.

Ну а если хочется только один скрипт в крон добавить, то имхо проще для каждой задачи время последнего запуска сохранять.
цитата
02/12/15 в 11:45
 Ailk
Mika писал:
Ставить под такую задачу RabbitMQ с Celery - это извращение покруче стрельбы из пушки по воробьям.
+1 за повесить задания на крон.
Да ладно. Десяток кронов на сайт не изврат? А если сайтов не 1?
цитата
02/12/15 в 12:48
 w84me
анафига воротить комбайн, если крон создан под эти цели. и курл. или пых скрипт, который может дергать пачку сайтов...

речи по топ1млн алексы или какой хайлоад не было. кролик прям совсем перебор
цитата
02/12/15 в 13:37
 Ailk
Получится ровно тот же самый самописный комбайн(не всмысле доступного функционала, а по сложности). Не лучше ли использовать специально разработанный и предназначенный для этого инструмент с необходимым контролем выполнения задач? К тому же поддерживаемый со стороны. Плюс автоматом снимаются головняки с поддержанием актуальности самописной системы.
цитата
02/12/15 в 14:03
 Stek
celery стоит использовать если тебе в проекте нужно создавать очереди задач или подобное. Но использовать как крон -это действительно как по воробьям из пушки.
цитата
02/12/15 в 15:03
 Ailk
но он сам себя позиционирует как "умная замена крону".
цитата
02/12/15 в 15:48
 Stek
так я и не спорю, что экскаватор эффективнее лопаты. Но если надо ямки под саженцы рыть - то все таки лучше по старинке лопатой trollface.png
цитата
02/12/15 в 19:15
 Ailk
smail101.gif
цитата
02/12/15 в 22:45
 Mika
Ailk писал:
Да ладно. Десяток кронов на сайт не изврат? А если сайтов не 1?

А celery y у тебя наверное волшебным образом мысли читает и делает все, о чем подумаешь? icon_smile.gif

Ailk писал:
но он сам себя позиционирует как "умная замена крону".

Где? Смотрим http://www.celeryproject.org/
Цитата:
Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.

Т.е. если в проекте используется celery, то можно его и в качестве планировщика заданий использовать, но чисто в качестве замены крону - это изврат.
цитата
03/12/15 в 01:05
 Lexikon
Как только я начинаю считать себя охирительным программистом, вы начинаете говорить на непонятном мне языке и тут я понимаю, что нужно еще чуток подучиться smail101.gif icon_razz.gif
Решил дергать всё кроном и не ипать себе мозг icon_smile.gif
Всем спасибо!
цитата
03/12/15 в 10:57
 Ailk
Mika писал:
Т.е. если в проекте используется celery, то можно его и в качестве планировщика заданий использовать, но чисто в качестве замены крону - это изврат.
Ващета крон и есть планировщик заданий trollface.png
цитата
04/12/15 в 00:39
 Mika
И где я утверждал обратное?
цитата
04/12/15 в 13:34
 Ailk
а в чем смысл предложения тогда был? Можно использовать в качестве планировщика задач, но чисто в качестве замены планировщику задач - изврат icon_confused.gif

На любом сайте сложнее визитки можно найти применение очередей: массовая обработка контента(ресайз фоток, конверт видео, синонимайз и проч.), автопостинг, обработка и формирование статистики, учет(лайки, клики, просмотры), парсинг, мониторинг и т.д.
Конечно можно все это засунуть в 10 кронов. А можно красиво оформить в качестве отдельных воркеров и потом не плеваться от собственного говнокода.
цитата
04/12/15 в 13:53
 rickdeckard
> На любом сайте сложнее визитки можно найти применение очередей: массовая обработка контента(ресайз фоток, конверт видео, синонимайз и проч.), автопостинг, обработка и формирование статистики, учет(лайки, клики, просмотры), парсинг, мониторинг и т.д.

можно но не нужно.

часть из этих задач я делаю через крон, без всяких celery, rabbitmq и прочего.
просто обработка разбивается на файлы - в каждом файле содержится пачка заданий например. по крону каждую минуту запускается обработчик который обрабатывает (с блокировкой от повторного запуска).
работает даже на виртуалхостингах.


Эта страница в полной версии