Size: a a a

Ваdоо PHP Мееtuр

2020 December 13

BD

Bogdan Diadenko in Ваdоо PHP Мееtuр
Возможно мой вопрос переключит внимание с ревербераторов))

А поделитесь способами выполнения long-term scripts/runtime(20-30) min. Естественно основной бэк написан на php и должна быть поддержка запуска как с web клиента так и через CLI. Shell_exec не предлагать)
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Bogdan Diadenko
Возможно мой вопрос переключит внимание с ревербераторов))

А поделитесь способами выполнения long-term scripts/runtime(20-30) min. Естественно основной бэк написан на php и должна быть поддержка запуска как с web клиента так и через CLI. Shell_exec не предлагать)
ну тут вариантов не много. по крону у вас скрипт может работать хоть вечность, а через веб, не совсем понимаю зачем вам
источник

PT

Pavel Tolstikov in Ваdоо PHP Мееtuр
shell_exec то чем плох? Естественно не прямую его дёргать из веба, а складывать в очередь и какой-нибудь демон будет разгребать и в нужное число потоков запускать, следить за результатом.
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Pavel Tolstikov
shell_exec то чем плох? Естественно не прямую его дёргать из веба, а складывать в очередь и какой-нибудь демон будет разгребать и в нужное число потоков запускать, следить за результатом.
+1 не успел дописать)
источник

PT

Pavel Tolstikov in Ваdоо PHP Мееtuр
Демона вполне можно тоже на php написать, хотя есть более подходящие языки.
источник

BD

Bogdan Diadenko in Ваdоо PHP Мееtuр
Sergey Kiryakov
ну тут вариантов не много. по крону у вас скрипт может работать хоть вечность, а через веб, не совсем понимаю зачем вам
Если нужно обработать 500к строк с csv и загружают его через ui интерфейс, то крайне неразумно будет удерживать клиент, которой по дефолту через 30с сам отпадет.
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Bogdan Diadenko
Если нужно обработать 500к строк с csv и загружают его через ui интерфейс, то крайне неразумно будет удерживать клиент, которой по дефолту через 30с сам отпадет.
пишете демона, ставите задачу. Делаете менеджера задач.
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Bogdan Diadenko
Возможно мой вопрос переключит внимание с ревербераторов))

А поделитесь способами выполнения long-term scripts/runtime(20-30) min. Естественно основной бэк написан на php и должна быть поддержка запуска как с web клиента так и через CLI. Shell_exec не предлагать)
Мне кажется, тут вопрос немного по другому надо сформулировать.

Ограничение времени выполнения легко крутится настройками и не должно быть проблемой.

Скорее вопрос, как эффективнее работать с этим.

Выше предложили отличный вариант через демонов с лимитом времени выполнения и памяти, чтобы минимизировать утечки. Ну и контролировать результат.
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Bogdan Diadenko
Если нужно обработать 500к строк с csv и загружают его через ui интерфейс, то крайне неразумно будет удерживать клиент, которой по дефолту через 30с сам отпадет.
Такой файл отлично пилится на несколько потоков и обрабатывается разными вариантами, например демонами уже. А на фронт возвращать результат через пуш
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Yushkevich Vitaly
Такой файл отлично пилится на несколько потоков и обрабатывается разными вариантами, например демонами уже. А на фронт возвращать результат через пуш
а на фронт нужно возвращать результат ли?
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Yushkevich Vitaly
Такой файл отлично пилится на несколько потоков и обрабатывается разными вариантами, например демонами уже. А на фронт возвращать результат через пуш
Пуш, на сколько я понимаю, предполагает наличие сокета, или я не прав?
источник

BD

Bogdan Diadenko in Ваdоо PHP Мееtuр
Yushkevich Vitaly
Мне кажется, тут вопрос немного по другому надо сформулировать.

Ограничение времени выполнения легко крутится настройками и не должно быть проблемой.

Скорее вопрос, как эффективнее работать с этим.

Выше предложили отличный вариант через демонов с лимитом времени выполнения и памяти, чтобы минимизировать утечки. Ну и контролировать результат.
Да, пожалуй вопрос больше об эффективности. Решение с демоном сейчас в работе и работает через редис очередь. Но демон на php в данной конфигурации невозможно запустить параллельно на исполнение.

А возможно есть на примете open-source решения таких демонов на других языках?
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Sergey Kiryakov
а на фронт нужно возвращать результат ли?
Ну тут от задачи зависит. Иногда достаточно «файл успешно сохранен, скоро увидите результат».
Тут уже детали обработки надо лучше понимать
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Bogdan Diadenko
Да, пожалуй вопрос больше об эффективности. Решение с демоном сейчас в работе и работает через редис очередь. Но демон на php в данной конфигурации невозможно запустить параллельно на исполнение.

А возможно есть на примете open-source решения таких демонов на других языках?
Что значит нельзя запустить параллельно?
Вы можете запустите их несколько, либо из мастер форкнуть
источник

BD

Bogdan Diadenko in Ваdоо PHP Мееtuр
Yushkevich Vitaly
Такой файл отлично пилится на несколько потоков и обрабатывается разными вариантами, например демонами уже. А на фронт возвращать результат через пуш
Можно и пуш, можно и по классике polling.
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Bogdan Diadenko
Можно и пуш, можно и по классике polling.
Понятно, что можно. Но пулинг будет менее эффективным решением
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Лучше берите те технологии, которые вы знаете. Можете и го взять, но для Php это вполне решаемая задача
источник

BD

Bogdan Diadenko in Ваdоо PHP Мееtuр
Yushkevich Vitaly
Что значит нельзя запустить параллельно?
Вы можете запустите их несколько, либо из мастер форкнуть
Параллельные воркеры возьмут в работу одну и ту задачу одновременно, это изъян моей системы(( Да как вариант переписать, собственно, что и хочу сделать. Но также хочу сделать это максимально эффективно.
источник

SK

Sergey Kiryakov in Ваdоо PHP Мееtuр
Bogdan Diadenko
Параллельные воркеры возьмут в работу одну и ту задачу одновременно, это изъян моей системы(( Да как вариант переписать, собственно, что и хочу сделать. Но также хочу сделать это максимально эффективно.
Тогда очень странно работает очередь.
Кастомизируйте, запоминайте какую задачу взяли
источник

YV

Yushkevich Vitaly in Ваdоо PHP Мееtuр
Bogdan Diadenko
Параллельные воркеры возьмут в работу одну и ту задачу одновременно, это изъян моей системы(( Да как вариант переписать, собственно, что и хочу сделать. Но также хочу сделать это максимально эффективно.
А зачем им дать одну и ту же? Если у вас обработка большого объема данных и хотите ускорить, вы можете из мастер процесса подробить данные и контролировать.

По сути, работа с каналами в го реализована по такому принципу
источник