gpt4 book ai didi

php - 使用 Laravel 4 更新实时数据(如进度条)

转载 作者:行者123 更新时间:2023-12-04 21:12:12 24 4
gpt4 key购买 nike

长话短说

I would like to send data to update live in a view, such as a progress bar showing the status of an action. What is the best way to do that in laravel 4?


设置

我正在开发一个基于 Laravel 4 的项目,每个用户都可以在其中兑换一个序列号。

我制作了一个管理后端,我可以在其中轻松粘贴 key 列表,或上传 key 文件。

假设 $key_string 是我上传的以换行符分隔的键字符串,我想解析出来然后从中上传包含的键字符串 - 这是添加的简化代码键:

$key_string = rtrim($key_string);
$key_string = str_replace("\n\r", "\n", $key_string);
$keys = explode( "\n", $key_string);

foreach($keys as $index => $key) {
Key::create(
array( "serial" => trim($key) )
);
}

由于我上传的 key 集数以千计,有时这可能需要 30 秒,在此期间管理面板自然不会显示任何内容。

现在,我不介意花这个时间。我不需要优化上传以使用一个查询等,但我希望获得一些实际反馈,以便我知道上传走了多远。


问题

当我上传 key 时,我希望能够每隔几秒或百分比更新一次我 View 中的进度条或计数器(使用当前的 $index)

有没有一种简单的方法可以轻松地处理这个问题,最好是集成在 Laravel 4 中?我假设这会涉及 ajax,但有人可以指出我正确的方向吗?

最佳答案

对于 PHP,实际上有两个选项无需 Web 套接字或推拉设置。这实际上不是 Laravel 的东西,它更像是一个请求 JSON“东西”的 AJAX 循环。

短轮询

Olark 将这种方法用于他们的聊天脚本。

setInterval(function() {
$.getJSON("/path", function(data) {
// update the view with your fresh data
});
}, 5000);

长轮询

Javascript

var eventName = function() {
$.getJSON("/path", function(data) {
// update the view with your fresh data
if (data.progress < 100)
eventName();
});
};

Controller 逻辑

当我让用户上传 CSV 并等待它完成上传和处理时,我会使用它。

// in your controller
$check = true;
while ($check) {
// search database
// compare values
if ($newDataWasFound)
$check = false;

$progressFromAbove = 90;
}

return Response::json(array(
'newData' => $array,
'progress' => $progressFromAbove,
));

我使用 Laravel 3 对此进行了截屏,但长轮询与 PHP 相关,与 Laravel 无关。 https://www.youtube.com/watch?v=LDgJF77jELo

示例

关于php - 使用 Laravel 4 更新实时数据(如进度条),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344343/

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