我正在开发一个可以创建QR码并将其呈现给用户的图形的应用程序。
问题: 我编写了一个脚本来导入用户以从CSV创建。我需要创建100多个用户(每个用户都包括上述过程)。现在,每个新用户大约需要1分钟才能完成处理。.然后立即吐出我所有的错误/成功消息。
我的问题: 在我的脚本处理过程中,不是浏览器缓慢加载结果视图(当前一直停留在白页上,直到完成),而是一种在某些情况下显示实时进度和错误的简便方法吗?就像在创建/失败每个用户时更新的进度条一样。我猜它需要AJAX吗?
答案 0 :(得分:1)
在处理网站时,请记住黄金法则。
PHP必须死。
Noobs认为这是人们在破坏PHP。不是。这是HTTP请求周期。
请求输入> PHP>响应输出> PHP进程终止。
仅在处理Web服务器和浏览器而不是CLI PHP时才是这种情况。但是,要点是,如果脚本花费的时间与您说的一样长,则可能最终导致Apache超时。
一种解决方案可能是设置一个cron来检查文件,如果找到该文件,则对其进行处理,将行号转储到您的浏览器可以检查的文本文件中,这意味着您可以获取进度:
<?php
if (file_exists('/some/csv/to/process.csv')) {
// open file
// get row to work on
// process row
// update progress file with next line number
}
与此同时,您可以设置执行此操作的脚本:
<?php
$progress = file_get_contents('/path/to/progress.txt');
header('Content-Type: application/json');
echo json_encode(['progress' => $progress]);
然后在setInterval函数中使用AJAX获得进度:
$.get('/path/to/progress/json/page', function(data){
console.log(data);
});
只是一个想法,可能适合您,但可以尝试一下!