Моя проблема может быть для вас очень простой, потому что я новичок в фреймворке phalcon.
Я создаю веб-систему, где я хочу загрузить файл Excel на сервер, затем выполнить набор условий и вставить результат в мою БД, но я хочу, чтобы выполнение выполнялось на сервере, что означает, что пользователь может закрыть браузер, но система должна по-прежнему обрабатывать файл и во время обработки должна отображать для пользователя панель процесса.






Вы можете загрузить файл и добавить его имя в систему очереди или просто сохранить в базе данных. Phalcon предоставляет поддержку Beanstalk из коробки, но если вы хотите вести историю (и легко показывать прогресс) загрузок, я бы порекомендовал использовать базу данных. Структура таблицы должна содержать такие столбцы, как: имя файла, обработанные_строчки, строки, статус (0 - новый, 1 - обработанный).
Для обработки файлов в фоновом режиме вы можете создать приложение Phalcon CLI, которое должно отслеживать очередь (или необработанные файлы из базы данных) и обрабатывать файлы. Вы должны настроить задачу CRON так, чтобы она запускалась каждые 1/5/10 минут в зависимости от того, сколько файлов вы загружаете, или запускайте ее в бесконечном цикле.
Чтобы определить прогресс, вы можете подсчитать все строки в файле и обновить количество обработанных строк во время обработки. Тогда вы можете просто подсчитать прогресс по запросу клиента.
Если вам нужен текущий прогресс, вы можете делать вызовы ajax с интервалом, чтобы получить текущий прогресс из базы данных, или реализовать сервер WebSocket, который будет отправлять вам прогресс из трубки другой очереди (обновляется процессом фоновой обработки).
Поместить задание в очередь: docs.phalconphp.com/fr/3.3/queue