Вот мой код:
function export_csv() { $st = $this->input->get('st'); //Start Date $en = $this->input->get('en'); //End Date $sTable = 'TABLE_NAME'; $this->load->dbutil(); $aColumns = array('tempdisplayid AS ucid','uui','campaign_name','location','caller_id','skill','calltime','answertime','TIMEDIFF(answertime,calltime) as timetoanswer','endtime','talktime','duration','fallback_rule','dialed_number','type','agent','agent_did','disposition','status','hangup_by','transfer','transfer_to','comments','dial_status','customer_status','agent_status','audio','AgentStatus','CustomerStatus','user_response'); $this->db->select('SQL_CALC_FOUND_ROWS '.str_replace(' , ', ' ', implode(', ', $aColumns)), false); $query = $this->db->get_where($sTable, array('date(calltime) >=' =>$st,'date(calltime) <=' =>$en)); $new_report = $this->dbutil->csv_from_result($query); write_file('/csv/records-'.$st.'to'.$en.'.csv', $new_report); $this->load->helper('download'); force_download('records-'.$st.'to'.$en.'.csv', $new_report); }
За последние 30 дней зарегистрировано 64,145 записей. Когда я пытаюсь загрузить, ссылка становится мертвой. Есть ли другой способ массового экспорта неограниченной записи в csv
.
Я тестировал этот код до 30000 после установки ini_set ('max_execution_time', 0); он отлично работает.
Все, кроме CSV, таких как xls, которые могут показывать объемные записи. Любая помощь.
Благодарю.
// top of your controller ini_set('max_execution_time', 0); // Also you can increase memory ini_set('memory_limit','2048M');
Загрузите этот помощник и поместите его в system/helpers/
и, наконец, создать csv, как это
$this->db->select('*'); $query = $this->db->get('your_table'); $this->load->helper('csv'); query_to_csv($query, TRUE, 'filename.csv');
Я думаю, что есть проблема в max_execution_time
кодеингатора
Вы можете увеличить его, используя приведенный ниже код
Перейти к файлу
system/core/CodeIgniter.php
Поиск set_time_limit
для set_time_limit
вы найдете ниже кода. Здесь вы можете усовершенствовать свое время
if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0) { @set_time_limit(300);// increase according to your requirmrnt }