У меня аналогичная потребность в проекте, где я создавал пиксель отслеживания.Я хотел немедленно вернуть им ответ, а затем Ларавел продолжил бежать.Я ставлю это как самое первое, что есть в index.php
:
if($_SERVER['REQUEST_URI'] == '/pixel'){
require "pixel.php";
}
Затем в этом файле (кое-что из этого может не относиться к вам, мне нужно было убедиться, что они не кэшировали его, поэтому он продолжаетзагрузить пиксель:
ignore_user_abort(true);
// turn off gzip compression
if ( function_exists( 'apache_setenv' ) ) {
apache_setenv( 'no-gzip', 1 );
}
ini_set('zlib.output_compression', 0);
// turn on output buffering if necessary
if (ob_get_level() == 0) {
ob_start();
}
// removing any content encoding like gzip etc.
header('Content-encoding: none', true);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo ' ';
} else {
header("Content-type: image/gif");
header("Content-Length: 42");
header("Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
header("Expires: Wed, 11 Jan 2000 12:59:00 GMT");
header("Last-Modified: Wed, 11 Jan 2006 12:59:00 GMT");
header("Pragma: no-cache");
echo sprintf('%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%',71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59);
}
// flush all output buffers. No reason to make the user wait for OWA.
ob_flush();
flush();
ob_end_flush();
Вот и все. Теперь Laravel продолжает работать, но браузер пользователя завершил свой запрос. Итак, я добавил маршрут, как обычно, в /pixel
и выполнил всеМне нужно было сделать (добавить в базу данных, события пожара и т. Д.).