Сценарий PHP может продолжить бежать за окончанием Запроса HTTP?

Нарушение правил нормализации прекрасно, пока бизнес-требование может все еще быть выполнено. Наличие key_1, value_1, key_2, value_2, ... key_n, value_n может быть в порядке, вплоть до точки, в которой Вы нуждаетесь key_n+1, value_n+1.

Моим решением была таблица данных для общих атрибутов и XML для уникальных атрибутов. Это означает, что я использую обоих. Если все (или большинство вещей) имеет размер, то размер является столбцом в таблице. Если только возражают, что A имеют атрибут Z, то Z хранится как XML ответ подобного Peter Marshall, уже данный.

8
задан Robinicks 15 September 2009 в 16:50
поделиться

2 ответа

Для запуска приложения PHP навсегда или до завершения работы php

ignore_user_abort(true);

set_time_limit(0);
5
ответ дан 5 December 2019 в 19:01
поделиться

Возможно, вас заинтересует конфигурационная директива ignore_user_abort и / или функция ignore_user_abort :

Устанавливает, отключается ли клиент должен вызвать прерывание сценария.

Используя это, вы можете:

  • сгенерировать часть страницы, которая должна быть отправлена ​​в браузер;
  • очистить вывод с помощью flush и / или ob_flush
  • вызов ignore_user_abort (сейчас или раньше)
  • выполнить еще одну работу

Браузер пользователя, вероятно, по-прежнему будет указывать «ожидание» или «загрузка», но содержимое страницы будет загружено и отображено - и даже если пользователь нажмет «стоп», ваш сценарий должен продолжить выполнение.

Для получения дополнительной информации на странице руководства по этой функции есть пример - и вы можете взглянуть на эту статью: Как использовать ignore_user_abort () для внеполосной обработки


Конечно, хотя это можно использовать для некоторого легкого процесса (например, "«очистить» содержимое в конце страницы, отображая его как можно быстрее для пользователя) , вы все равно будете ограничены max_execution_time и т.п.

Итак, это не является решением, которое следует использовать для длительных / тяжелых вычислений.

4
ответ дан 5 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: