Я пытаюсь вызвать функцию после того, как страница была отправлена в браузер, но я не нашел способ сделать это.
Я пробовал и register_shutdown_function, и __destruct, но он не работает.
Это та структура, которая у меня есть:
register_shutdown_function('MyClass::Save'); MyClass::Initialize(); CreateAllOutput();
MyClass :: Save сна (20) внутри.
Функция shutdown вызывается после CreateAllOutput (), но правда в том, что панель загрузки в браузере завершается только после того, как функция Save была выполнена, ожидая 20 секунд … Я пробовал то же самое с использованием нестатического класса и __destruct, сна (20) внутри, и то же самое происходит.
Есть ли способ заставить функцию выполнять только после того, как все данные были отправлены в браузер?
Заранее спасибо.
Обычно: нет . Нет никакой возможности, кроме как сбросить весь вывод, а затем вызвать его, но панель загрузки в браузере не завершится.
Единственное, о чем я могу думать, это положить iFrame на страницу, чтобы вызвать PHP-файл с функцией сохранения. Или вы можете сделать вызов Ajax.
Третьей возможностью было бы вызвать exec()
( Documentation ). После создания файла php можно выполнить его с помощью этого метода. Как указано в документации:
Если программа запускается с этой функцией, чтобы она продолжала работать в фоновом режиме, выход программы должен быть перенаправлен в файл или другой выходной поток. В противном случае PHP зависнет до завершения программы.