Добрый день!
обычно вычисления запускаются при наступлении определенного признака (изменения поля, добавления поля и т.п.)
существует необходимость массового редактирования карточек клиентов, которые подпадают под определенный признак.
но нет возможности вручную их редактировать (при редактировании срм сильно зависает, работать невозможно. поэтому редактирование планируется запускать по ночам).
поэтому хотелось бы днем программировать необходимое вычисление для редактирования, а запускаться оно должно, например, в определенное время.
или эту задачу необходимо выполнять через CRON ?
1
Авто запуску вычисления в таблице.
Автор valeralezhnev, 01 июля 2016 14:26
Сообщений в теме: 4
#1
Отправлено 01 Июль 2016 - 14:26
#2
Отправлено 01 Июль 2016 - 15:36
Так крон именно для этого и предназначен - вычисления по расписанию.
#3
Отправлено 06 Июль 2016 - 23:26
спасибо за ответ.
проблема заключается в том, что если запустить вычисление в кроне (например, редактирование 2000 полей таблицы, соответствующих определенному признаку), то срм упадет.
под упадет я понимаю 502 ошибку.
опытным путем было установлено, что при запуске массового редактирования, те вычисления, которые запускаются в кроне (например, рассылка писем, раз в 5 минут), выстраиваются в очередь процессов и не выполняются (ждут, когда закончится процесс массового редактирования. вообще во время массового редактирования срм зависает и ничего в ней невозможно делать). в итоге накопившиеся процессы отрубают срм. и пока мы не перезапустим апач, срм не оживает.
поэтому при массовом редактировании по вечерам я вручную отключаю все процессы в кроне, ставлю на ночь редактироваться большие куски, а утром заново запускаю все необходимые вычисления в кроне (такие как рассылка, архивирование лога, рассылка смс и другие).
если оставить хоть один процесс в кроне включенным, то он создаст очередь запросов на выполнение и тоже уронит срм (проверено)
если можно выставить обычные рабочие вычисления в кроне так, чтобы они выполнялись, например, каждые 5 минут в период с 9 утра до 22 вечера, а с 22 до 9 не работали, то тогда можно сделать задание в кроне для массового редактирования полей, отвечающих определенному признаку как раз с 22 вечера до 9 утра.
или задание в кроне работает не по тому же принципу, как ручное массовое редактирование и не будет валить систему?
проблема заключается в том, что если запустить вычисление в кроне (например, редактирование 2000 полей таблицы, соответствующих определенному признаку), то срм упадет.
под упадет я понимаю 502 ошибку.
опытным путем было установлено, что при запуске массового редактирования, те вычисления, которые запускаются в кроне (например, рассылка писем, раз в 5 минут), выстраиваются в очередь процессов и не выполняются (ждут, когда закончится процесс массового редактирования. вообще во время массового редактирования срм зависает и ничего в ней невозможно делать). в итоге накопившиеся процессы отрубают срм. и пока мы не перезапустим апач, срм не оживает.
поэтому при массовом редактировании по вечерам я вручную отключаю все процессы в кроне, ставлю на ночь редактироваться большие куски, а утром заново запускаю все необходимые вычисления в кроне (такие как рассылка, архивирование лога, рассылка смс и другие).
если оставить хоть один процесс в кроне включенным, то он создаст очередь запросов на выполнение и тоже уронит срм (проверено)
если можно выставить обычные рабочие вычисления в кроне так, чтобы они выполнялись, например, каждые 5 минут в период с 9 утра до 22 вечера, а с 22 до 9 не работали, то тогда можно сделать задание в кроне для массового редактирования полей, отвечающих определенному признаку как раз с 22 вечера до 9 утра.
или задание в кроне работает не по тому же принципу, как ручное массовое редактирование и не будет валить систему?
Сообщение отредактировал valeralezhnev: 06 Июль 2016 - 23:29
#4
Отправлено 07 Июль 2016 - 09:16
А вопрос то в чем? Если про расписание, то такое именно (днем работает, ночью - нет) в данный момент невозможно. Если про зависание процесса, то тут нет других решений кроме как оптимизировать код или делить его на части, например обрабатывать только определенное число строк за раз, тогда один процесс займет меньше времени и не будет так фатально все вешать.
#5
Отправлено 07 Июль 2016 - 11:04
CbCoder (07 Июль 2016 - 09:16) писал:
А вопрос то в чем? Если про расписание, то такое именно (днем работает, ночью - нет) в данный момент невозможно. Если про зависание процесса, то тут нет других решений кроме как оптимизировать код или делить его на части, например обрабатывать только определенное число строк за раз, тогда один процесс займет меньше времени и не будет так фатально все вешать.
я не знал о возможности прописать это в коде. благодарю за рекомендацию
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных