Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
892
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
PHP: запуск задачи в фоне
Просмотров: 330
 
Ответов: 5
Какие самые правильные и надежные подходы стоит использовать, если необходимо запустить некую длительную задачу в фоновом режиме?
Приведу пример, чтобы стало понятней:
есть основной php скрипт, контроллер, который обрабатывает пользовательские действия. Пользователь нажимает в интерфейсе волшебную кнопку, которая должна запустить долгоиграющую задачу и вернуть управление пользователю. При этом не требуется возвращать или как то дополнительно обрабатывать результат работы длительного скрипта.
Знаю, что для подобных задач существуют различные библиотеки для создания очереди сообщений, но конкретно для моего примера это избыточно.
Так же хотелось бы обойтись без cron-task-ов и других ОС-специфичных вещей.
Спасибо.
PHP CLI в фоне ведет себя плохо. Из того, что применяется «на скорую руку», хорошо себя ведут BASH, Perl и Python.
В задаче, где надо было беречь ресурсы, поступил так:
1. Скрипт на PHP сохраняет «задание» на BASH в некоторую директорию job
2. Крон ежеминутно запускает некий скрипт dispatcher, написанный на Perl (был жизнеспособный вариант и на BASH) который ищет N самых старых (по last modified time) скриптов из директории job, и запускает их.
3. Запускаемые скрипты первым делом уничтожают (rm) себя, чтобы не Они все равно выполнятся — ведь они уже загружены в ОЗУ. Результаты работы сохраняются в ФС или в БД, для обслуживания логики интерфейса
Число N для каждого конкретного сервера выявляется индивидуально — тестированием.
Был «подводный камень», который по первому разу даже был обнаружен совершенно невовремя — все, что запускает крон, должно работать с абсолютными путями.
Таким образом были сделаны проект вроде ютуба и аналогичный, тоже конвертирующий видео.
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться