我正在尝试在循环运行时输出更新字符串,让用户知道页面没有卡住并且正在运行。
我的代码在谷歌应用引擎上运行,循环部分是这样的。
while (($data = fgetcsv($file, 10000, ",")) !== FALSE) {
$STH = $DBH->prepare("INSERT INTO DB");
$STH->execute();
echo "<p>Please wait. How about a glass of water while it is running? </p>";
}
它是代码的一部分,用于检查 CSV 文件中的用户列表,并确保使用最新更改更新数据库。所以这部分是插入部分。现在发生的事情是,它不会显示 echo 语句,直到整个脚本被执行并且我最终得到很多文本行。
我想知道我们是否可以在执行循环时输出回声。当我用谷歌搜索时,似乎使用了flush()和ob_flush(),但它不适用于谷歌应用程序引擎。有些人说使用任务队列,但找不到一个像样的教程来解释如何使用任务队列。
我希望有人能够帮助为想要使用任务队列的新手用户创建一个。我相信当一个人运行循环并在运行时获取输出时,这将非常有帮助。
谷歌文档的链接
https://cloud.google.com/appengine/docs/php/taskqueue/overview-pushhttps://cloud.google.com/appengine/docs/php/config/queue
这不是HTTP的工作方式。您可以重写Web服务器的代码,也可以编写自己的浏览器来支持您自己的超文本传输协议(在RFC 2616中定义)的特殊流版本,该协议不需要发送有限的响应...或者你可以做一个理智的人会做的事情,只是:
-
发回带有特殊密钥的响应,用户的浏览器可以在暂时向服务器发送微小请求时使用
-
每隔几秒钟向服务器发送一个小请求,以确定用户触发的计算是否已完成(由在第一个请求中启动计算时传回的特殊键标识)。
-
当您从服务器收到 OK 消息时(例如,发回 json 响应,成功响应将
{ "success": true }
),使用结果数据或可访问位置的链接更新页面等。
我会花至少 3 个月的时间研究互联网在最基本的层面上是如何工作的,然后再尝试在一个假设基础知识的平台上进一步编码。我建议从这里开始。