gpt4 book ai didi

php - 如何在脚本仍在执行时设置任何数据?

转载 作者:行者123 更新时间:2023-11-29 02:57:16 25 4
gpt4 key购买 nike

现在我正在使用事件流将上传进度从另一个脚本回显给用户,但无论我如何尝试将变量从表单数据进度 php 文件传递​​到我的事件流文件,它不起作用。

问题是,我在运行的用于文件上传的 php 脚本中所做的所有更改仅在完整脚本执行后才可见在我的服务器上,而它在我的本地计算机上运行良好。

我试过在我的 web 目录、tmp 目录和使用 mysql 数据库中写入文件,但都没有成功。

这是我的上传进度 php 脚本在 sql 解决方案中的大致样子:

$progress = 0;
foreach ($files as $file) {
sql("UPDATE `tmp` SET `progress`=? WHERE `ID`=?", $progress, $id);
imagejpeg($image, "images/gallery/$filename.jpg", 100);
$progress++;
}

还有我的事件流 php 脚本:

echo "data: ".sql("SELECT `progress` FROM `tmp` WHERE `ID`=?", $id)."\n\n";

我将不胜感激如何解决这个问题,最好不要安装任何 php 库。

谢谢

最佳答案

我通过上传脚本向用户刷新进度并通过定期检查 xhr.responseText 处理输出来解决我的问题。

PHP(刷新换行符 + 进度)

foreach ($files as $drop => $file) {
echo "\n$progress";
flush();
// file progressing
}

JavaScript(在最后一个换行符后获取进度)

setInterval(function() {
if (page.xhr.readyState == 3 && page.xhr.status == 200) {
var response = page.xhr.responseText;
$('#progress').stop().animate({width: parseFloat(response.substr(response.lastIndexOf("\n")+1))+'%'}, 480);
}
}, 1000);

关于php - 如何在脚本仍在执行时设置任何数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com