PHP Как ответить на HTTP-запрос и продолжить обработку?

Я работаю с API для платежного шлюза, который выполняет запрос обратного вызова. Когда будет сделан запрос обратного вызова, шлюз ожидает от меня ответа "ОК". Ничего более или менее. И это не значит, что HTML-ответ предоставлен. Просто файл обратного вызова с этими двумя буквами. Обратите внимание, что это не означает, что он хочет HTTP Status Code 200/OK... он хочет фактические данные (не заголовки) для слова "OK".

Так что это не сработает:

<html><body>OK</body></html>

Это будет работать:

<?php echo "OK"; ?>

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

<?php
echo "OK";
header('Location: http://www.store.com/success.php');
exit;
?>

Шлюз игнорирует эхо "OK" и вместо этого считывает html со страницы success.php, на которую я перенаправляю.

Итак, как я могу отправить обратно только ОК, но продолжать делать вещи на моей стороне?

Спасибо

4 ответа

Решение

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

Прежде чем отправить OK Вы можете вызвать PHP через командную строку, чтобы PHP работал как многопоточный.

Было бы приемлемо переместить перенаправление на клиентскую сторону с помощью javascript или мета-обновления?

Вы можете попробовать использовать flush(); заставить php выписать ОК.

Другие вопросы по тегам