Я ОЧЕНЬ новичок в PHP, сейчас я работаю над сервисом, часть которого включает короткие URL, у меня все настроено нормально с помощью перенаправления заголовка:
<?php
if (code_exists($code)) {
// this code gets url for redirect:
$url_query = mysql_query("SELECT * FROM urls WHERE code = '".$code."'");
$url = mysql_result($url_query,0,'url');
$id = mysql_result($url_query,0,'url_id');
// this code redirects user
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Thu, 1 Jan 1970 00:00:00 GMT");
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: ".$url );
// this code executes a function, takes 3 - 4 seconds to return
$affected = dostuff($id);
} else {
echo "Code Error: ".$code;
}
?>
Строка $affected = dostuff($id);
вызывает несколько внешних API и записывает результаты в таблицу mysql (часто более 100 строк).
Проблема в том, что внешний API и добавление строк занимает несколько секунд, пользователь должен подождать этого, прежде чем будет перенаправлен, что означает плохой пользовательский опыт.
Можно ли как-нибудь собрать и отправить заголовки пользователю без остановки выполнения кода?
В качестве альтернативы есть способ «запустить» другой скрипт, но передать ему параметр $id
?
Я бы предпочел избегать использования заданий CRON, если это возможно, так как они запутывают меня до чертиков:).
Любая помощь с благодарностью.