gpt4 book ai didi

php - 如何使 CSV 上传执行得更快?

转载 作者:行者123 更新时间:2023-11-29 05:38:58 24 4
gpt4 key购买 nike

我想知道你们中是否有人尝试过以实时形式(multipart/form-data)进行 CSV 迁移,我的正在运行,我唯一讨厌的是它消耗了太多时间并且达到了最大值执行超时。我做的快速修复是通过在我的 php.ini(或 set_time_limit())中设置最长执行时间,但我真的很烦等待半小时只是为了导入整个数据,尽管它不超过 100kb。我只是 react 过度了还是什么?

这是代码:

function upload($id, $old_eid)
{

$filename = $_FILES['event_file']['tmp_name'];
$handle = fopen($filename, "r");

while(($data = fgetcsv($handle, 1000, ",")) !== FALSE){
$id = $id;
$id2 = $data[2];
$ckr = $this->Manager_model->check_if_record_exists($id, $id2);

if(count($ckr) > 0):
$this->session->set_flashdata('err', '<div class="error">Duplicated record</div>');
redirect("manager/csver/$id");
else:
$data['col1'] = $data[0];
$data['col2'] = $id;
$data['col3'] = $data[3].' '.$data[4];
$data['col4'] = $data[2];
$data['col5'] = $data[6];
$data['col6'] = $data[1];
$data['col7'] = $data[7];

$data['col8'] = mt_rand(11111, 99999);
$data['col9'] = $old_eid;

$this->Manager_model->add_csv($data);
$this->Manager_model->add_csv_to_photo($data);

endif;
}
fclose($handle);
$this->session->set_flashdata('success', '<div class="success">CSV successfully uploaded</div>');
redirect("manager/records/$id");
//$this->session->set_flashdata('msg', '<div class="success">Records successfully uploaded</div>');
}

我的经理_模型:

 function add_csv($data)
{
$src = array(
'col1'=> $data['col1'],
'col2' => $data['col2'],
'col3' => $data['col3'],
'col4' => $data['col4'],
'col5' => $data['col5'],
'col6' => $data['col6'],
'col7' => $data['col7'],
'col8' => $data['col8'],
);
$this->db->insert('e_records2', $src);

if($this->db->affected_rows() == '1'):
return TRUE;
endif;

return FALSE;
}

function add_csv_to_photo($data) {
$src = array(
'col1'=> $data['col1'],
'col2' => $data['col2'],
'col3' => $data['col3'],
'col4' => $data['col4'],
'col5'=> $data['col5'],
'col6'=> $data['col6'],
);
$this->db->insert('e_records', $src);

if($this->db->affected_rows() == '1'):
return TRUE;
endif;

return FALSE;
} function check_if_record_exists($id, $id2)
{
$eid = $id;
$id2 = $id2;
$query = $this->db->query("select * from races_results where eid = $eid AND id2 = $id2");
return $query->result();
}

附言我在这里不是在谈论 PhpMyAdmin,因为我知道导入 csv 文件在那里是如何工作的。而且它会创建很多琐碎的任务来使用骨骼迁移文件。

最佳答案

为什么不运行探查器来优化您的代码? Codeigniter 包括这个有用的部分来解决这样的问题 http://codeigniter.com/user_guide/general/profiling.html

它将向您详细说明您的 SQL 查询以及花费的时间和位置。

$this->output->enable_profiler(TRUE);

关于php - 如何使 CSV 上传执行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344276/

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