У меня есть базовое программное обеспечение для отслеживания веб-сайтов, которое отправляет JSON object
с jQuery AJAX
из кросс-домена веб-страницы на сервер, где данные обрабатываются скриптом php
. Это срабатывает на window.onbeforeunload
.
При тестировании моего php
скрипта я понял, что клиентский веб-сайт в другом домене все еще ждет завершения php-скрипта перед загрузкой следующей страницы. Например, посетитель сайта клиента переходит на другую страницу. Мы отправляем перекрестный домен JSON object
на сервер для его обработки. Если я добавлю sleep(30);
на мой php
скрипт клиентский сайт не загрузит следующую страницу, пока этот php
скрипт не закончится (30 + секунд).
Мне не нужно возвращать какие-либо значения после запуска этого скрипта, так как я могу гарантировать, что этот скрипт php
работает без какого-либо влияния на клиентский сайт?
Надеюсь, я достаточно хорошо объяснил. Задавайте любые вопросы, если нет, спасибо.
РЕШЕНИЕ:
Это то, что сработало для меня ( http://php.net/manual/en/features.connection-handling.php#93441 ):
ob_end_clean(); header("Connection: close\r\n"); header("Content-Encoding: none\r\n"); ignore_user_abort(true); // optional ob_start(); echo ('Text user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Strange behaviour, will not work flush(); // Unless both are called ! ob_end_clean(); //do processing here sleep(5); echo('Text user will never see'); //do some processing