ajax — выполняет PHP и позволяет Apache делать все остальное в фоновом режиме

Это может быть очень глупый вопрос, поэтому, пожалуйста, потерпите меня.

У меня есть php-скрипт, который делает вызовы API для Shopify.

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

Теперь это должно пройти около 200 клиентов.
Весь этот процесс занимает около 15 минут.

Обычно это выполняется ежемесячно с помощью cron.

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

Задание cron запускает header_php.php? Run = ежемесячно

В любом случае я могу запустить его вручную, убедиться, что он получает ответ 200 со страницы, а затем закрыть вкладку браузера и убедиться, что apache сделает все остальное?

Я бы также выполнил это через AJAX-вызов.

Другое дело, что после обработки каждого оператора скрипт выводит его в pdf и отправляет по электронной почте клиенту. Таким образом, нет никакой обратной связи от страницы, когда она запускается.

0

Решение

Легко выполнимо с простыми заголовками HTTP.

  1. Начать буферизацию вывода
  2. Вывести ответ, если есть
  3. послать Content-length а также Connection: close заголовки
  4. Очистить и завершить выходные буферы
  5. Браузер получает HTTP-ответ
  6. Продолжить трудоемкую обработку

Это так ответ прибивает это (комментарии полезны также).

0

Другие решения

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

shell_exec('nohup /usr/bin/php /dir/to/your/script.php > /dev/null 2>/dev/null &');

Тогда вам не нужно ждать, чтобы закончить работу

-1

на Linux

<?php
exec(''.$command.' > /dev/null 2>&1 &');
?>

на окнах

<?php
$shell = new COM("WScript.Shell");
$shell->run($command, 0, false);
?>

где команда будет что-то вроде

php -f $ path / to / filename

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

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector