异步运行PHP循环

异步运行PHP循环,php,asynchronous,Php,Asynchronous,我有一个应用程序,需要在某个时间显示警报,我需要在后台运行一些PHP echo "My content"; // Run below code asynchronously without interrupting the client's page from loading sleep(60); header("location: alert.php"); 我不希望客户端的浏览器等待所有PHP完成,而是希望它加载并在60秒后显示警报。出于安全原因,我也不能使用JavaScript。你说的

我有一个应用程序,需要在某个时间显示警报,我需要在后台运行一些PHP

echo "My content";

// Run below code asynchronously without interrupting the client's page from loading

sleep(60);
header("location: alert.php");
我不希望客户端的浏览器等待所有PHP完成,而是希望它加载并在60秒后显示警报。出于安全原因,我也不能使用JavaScript。你说的是“警报”,但你是指JavaScript
alert()
还是其他类型的警报,比如HTML块,或者HTML模式

在任何情况下,为什么不让您的PHP脚本执行以下操作:

ob_end_flush(); // Disable output buffering
echo "My content. Please wait...";
do_some_stuff_that_takes_a_while();
echo "<script>alert('Done!');</script>";
ob_end_flush();//禁用输出缓冲
echo“我的内容,请稍候…”;
做一些需要花一段时间的事情;
回显“警报('Done!');”;

您需要一些客户端代码来触发异步请求。请解释您关心的安全问题。也许在PHP端,您可以在需要任何延迟后返回不同的数据,但是您仍然需要使用Javascript执行延迟加载。警报必须显示。实际上,这是一个重定向。内容只能在有限的时间内显示,然后必须重定向。我曾经想过使用JS,但它可能会以某种方式停止,不是吗
setTimeout(myRedirectFunc,60000)
您确定PHP总是精确地花费60秒吗?为什么不在PHP完成后显示警报,即使它需要60秒多一点或不到一点?首先,它是一个html文件,请参见问题,其次,它会阻塞。您的代码不会回显内容。它一直在加载,直到
在()完成时做一些东西。什么是HTML文件?警报?原来的问题没有提到“HTML”。在任何情况下,你是说“我的内容…”直到(
do\u some\u stuff\u while()完成后才会显示?这可能是因为系统以其他方式缓存/缓冲区
ob_end_flush()
禁用PHP的缓存,但缓存可能仍在服务器或代理级别进行。如果没有其他内容,请尝试在“请稍候…”消息中添加一个
\n
,以查看该消息是否会刷新缓冲区。它会重定向到一个html文件:
位置:alert.php