我正在上传一个excel文件,并且基于excel文件,我正在数据库中插入和更新多个表,并且还基于excel数据进行计算。
在codeigniter表单操作中,我正在传递控制器数据处理并执行所有过程,但是我想在UI中显示进度条,其中包含仅可以上传的上传数据量的百分比我可以执行此操作,但是在这里我需要执行计算,插入和从中获取数据,然后更新另一个表,然后从另一个表获取数据,然后更新另一个表,依此类推,为此,我创建了4个函数,并在每个函数的末尾调用了每个函数,在最后一个函数中,我将重定向到上载页面。
因此,我如何能够获得功能的进度,如何跟踪功能的执行并将其发送到UI以实时显示进度栏。
还是有另一种方法,请告诉我...
1.查看页面,其中有表格 1.查看页面,其中有表格 echo form_open('DataProcessing/upload_kpi_data', $attributes);
2.在DataProcessing.php中
upload_kpi_data(){ //upload in temp table .... function2() //calling another function for calculation }
function2(){ //performing calculation .... //updating main table and insert new value function3() //calling another function for calculation } and so on... 那么我如何能够为此获得实时进度栏?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为了实现在UI中实时显示上传及后续处理进度的功能,您可以采用以下步骤结合您已有的CodeIgniter框架结构和参考资料中的知识来实现:
首先,确保您的项目中有一个类似UploadTask
的类或对象,该类能够提供任务状态跟踪、暂停、取消以及获取checkpoint信息的能力。如果CodeIgniter没有内置这样的功能,您可能需要自定义一个或者寻找第三方库来支持这一需求。
将您的数据处理流程分解为多个阶段,每个阶段对应一个函数。在每个关键处理步骤完成后,触发一个事件,并更新一个全局进度变量。这要求您对现有的四个函数进行改造,使其能够在完成特定任务后不仅调用下一个函数,还能更新并暴露当前处理进度。
UploadTask
类的.on('progress', callback)
方法或类似的机制,当后端处理到某个阶段时,通过Websocket或轮询Ajax请求向客户端推送进度信息。// 假设后端提供了获取进度的API
function updateProgress() {
$.ajax({
url: 'get_upload_progress', // 后端接口获取进度
success: function(progress) {
// 更新UI上的进度条
$('#progressBar').css('width', progress + '%');
if (progress < 100) {
setTimeout(updateProgress, 1000); // 每秒检查一次进度
}
}
});
}
updateProgress(); // 初始化进度查询
DataProcessing.php
控制器中,为每个关键处理步骤添加进度记录逻辑,并通过API暴露给前端查询。class DataProcessing extends CI_Controller {
public function upload_kpi_data(){
// ...上传至临时表逻辑...
$this->recordProgress(25); // 假设上传完成25%
$this->function2();
}
private function function2(){
// ...计算逻辑...
$this->recordProgress(50); // 假设计算完成达到50%
$this->function3();
}
// ...其他函数类似...
private function recordProgress($percentage){
// 记录并更新进度到数据库或缓存
}
public function get_upload_progress(){
// 从数据库或缓存中读取进度并返回给前端
}
}
通过上述方案,您可以在用户界面实时展示整个处理流程的进度,包括上传文件、数据计算、插入/更新数据库等多个步骤的综合进度。