Intereting Posts
В PHP после назначения ресурса указателя файла переменной с помощью функции fopen (), как я могу получить имя файла из переменной? Как искать массив для нескольких значений в PHP? как я могу исправить продолжительность времени, чтобы заполнить форму php-скрипт останавливается через 360 секунд и показывает 500 ошибок сервера для больших файлов Снятие сеансов (PHP) Методы магии PHP __get и __set Настройка пользовательских параметров при добавлении продукта в корзину через SOAP в Magento fputCSV странное поведение Как я могу не отображать номер страницы = 1 в формате pdf? (hmtl css) Как загрузить изображения в обычной форме вставки (MySql)? после загрузки изображение должно иметь три версии разных размеров и разных имен Запросить данные из формы с несколькими входами, использующими одно и то же имя WooCommerce 2.6 – Скрытие оплачиваемой доставки, когда бесплатная доставка запускается путем достижения определенной суммы Поисковый запрос PHP xpath использование print_r PHP_EOL openTBS удаляет изображение, если замена не найдена

PHP: продолжить после завершения вывода

Во-первых, я не ищу ignore_user_abort. Вместо этого я ищу функцию для завершения вывода и отправки документа пользователю. После этого я хотел бы, чтобы php-скрипт выполнял дополнительный процесс, который занимает еще несколько секунд без эффектов для пользователя, только фоновый процесс.

У пользователя нет причин ждать, пока это будет завершено. Выход уже готов к догонянию. Предоставляет ли PHP функцию для закрытия подключения к пользователю, но какое-то время оставайтесь на сервере для завершения работы?

Одна из лучших особенностей php-fpm. Вы – fastcgi_finish_requests (). Это завершит сеанс для клиентской стороны и продолжит процесс на сервере. Это также лучший вариант использования для обмена сообщениями в качестве альтернативы для чередования или задержки обработки cron.

Тем не менее, он ограничен php-fpm!

Вы должны разделить свою работу на 2 файла (один с начальной обработкой, который производит вывод), а второй, более тяжелый, который занимает еще несколько секунд, но не должен заставлять пользователя ждать до его завершения.

Затем попросите браузер вызвать его либо с помощью Ajax, либо с помощью скрытого iframe .

Вы могли бы даже заставить второй скрипт вернуть сообщение об успешном завершении / сбое и поймать, что с JavaScript, чтобы уведомить пользователя, не затрагивая его фактический исходный результат.

похоже, что вы хотите, это какой-то материал ajax. если вы отправите ответ пользователю, сценарий закончится. но с помощью javascript вы можете запустить ajax-вызов другого php-скрипта, который ничего не изменит для пользователя.

вы можете попробовать использовать curl(); для ping localhost и запуска другого выполнения сценария для выполнения любых дополнительных задач, которые у вас есть.

После запуска сценария добавьте запись в таблицу очередей. Затем запустите задание cron, чтобы обработать очередь, заблокировать запись, а затем удалить их по мере их обработки, поэтому, если ваши кроны перекрываются, они не выполняют одну и ту же работу дважды.