如何在运行谷歌应用引擎的 php 中执行循环时输出 html


How to output html when a loop is being executed in php running google app engine

我正在尝试在循环运行时输出更新字符串,让用户知道页面没有卡住并且正在运行。

我的代码在谷歌应用引擎上运行,循环部分是这样的。

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中定义)的特殊流版本,该协议不需要发送有限的响应...或者你可以做一个理智的人会做的事情,只是:

  1. 发回带有特殊密钥的响应,用户的浏览器可以在暂时向服务器发送微小请求时使用

  2. 每隔几秒钟向服务器发送一个小请求,以确定用户触发的计算是否已完成(由在第一个请求中启动计算时传回的特殊键标识)。

  3. 当您从服务器收到 OK 消息时(例如,发回 json 响应,成功响应将{ "success": true }),使用结果数据或可访问位置的链接更新页面等。

我会花至少 3 个月的时间研究互联网在最基本的层面上是如何工作的,然后再尝试在一个假设基础知识的平台上进一步编码。我建议从这里开始。