我遇到了很多问题,无法让重定向正常工作,之后我的脚本打算在后台继续工作。重定向到我网站的另一个页面只会在我原始页面完成处理后才能正常工作。
我终于发现了问题所在
会话只有在脚本的最后才会被 PHP 关闭,并且由于对会话数据的访问被锁定以防止多个页面同时写入它,因此新页面必须等到原始处理完成后才能加载。
解决方案
使用 session_write_close() 在重定向时手动关闭会话。
<?php
ignore_user_abort(true);
set_time_limit(0);
$strURL = "将您的重定向地址放在这里";
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() 之后不会写入会话,例如,在您的后台处理代码中。这将不起作用。另外请避免读取,记住,下一个脚本可能已经修改了数据。
因此,请尝试在重定向之前读取所需数据。