我在使重定向工作方面遇到了很多问题,之后我的脚本应该在后台继续工作。重定向到我网站上的另一个页面只会在我完成原始页面的处理后才能工作。
我终于发现了问题所在
会话只有在脚本的最后才会被PHP关闭,并且由于对会话数据的访问被锁定以防止多个页面同时写入它,因此新页面必须等到原始处理完成后才能加载。
解决方案
使用session_write_close()在重定向时手动关闭会话
<?php
ignore_user_abort(true);
set_time_limit(0);
$strURL = "在此处放置您的重定向URL";
header("Location: $strURL", true);
header("Connection: close", true);
header("Content-Encoding: none\r\n");
header("Content-Length: 0", true);
flush();
ob_flush();
session_write_close();
sleep(100);
exit;
?>
但请注意
确保您的脚本在session_write_close()之后(即在您的后台处理代码中)不会写入会话。那将不起作用。另外,避免读取,请记住,下一个脚本可能已经修改了数据。
因此,请尝试在重定向之前读取您需要的数据。