Для этого можно использовать cURL с очень коротким таймаутом.Это будет ваш основной файл:
<?php>
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/processor.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 10); //just some very short timeout
curl_exec($ch);
curl_close($ch);
?>
А это ваш файл процессора:
<?php
ignore_user_abort(true); //very important!
for($x = 0; $x < 10; $x++) //do some very time-consuming task
sleep(10);
?>
Как вы можете видеть, верхний сценарий отключится через короткое время (10 миллисекунд в этомдело).Возможно, что CURLOPT_TIMEOUT_MS
не будет работать так, как в этом случае, это будет эквивалентно curl_setopt($ch, CURLOPT_TIMEOUT, 1)
.
Так что, когда к файлу процессора будет получен доступ, он выполнит свои задачи независимо от того,Пользователь (то есть вызывающий файл) прерывает соединение.
Конечно, вы также можете передавать параметры GET или POST между страницами.