Мое веб-приложение, использующее CodeIgniter 1.7, имеет ошибку ERR_RESPONSE_HEADERS_TOO_BIG при открытии только браузера Chrome. Я попробовал со всем другим браузером, ошибка не произойдет.
Я могу открыть страницу, как только после обновления страницы ошибки. Я пытаюсь выполнить поиск у Google, похоже, эта ошибка происходит с пользователем Chrome с 2009 года по настоящее время.
Это мой код контроллера:
function search_daily_sales_summary_view() { if(!($this->session->userdata('DAILY_SALES_SUMMARY'))){ $this->session->set_flashdata('error', 'You dont have the permission to access that page.'); redirect('login/home'); } $this->load->model('currency_model'); $this->load->model('bill_model'); $data = array(); $report = array(); if($query = $this->currency_model->list_currency()) { foreach ($query as $row) { $currencyid = $row->CURRENCY_ID; $currencycode = $row->CURRENCY_CODE; if($buyData = $this->bill_model->calculate_buy($currencyid)) { $totalbuy = $buyData->total_from_amount; $totalbuy_rate = $buyData->rate; if($buyData->total_from_amount=='') { $totalbuy = 0.00; } if($buyData->rate=='') { $totalbuy_rate = 0.00; } } else { $totalbuy = 0.00; $totalbuy_rate = 0.00; } if($sellData = $this->bill_model->calculate_sell($currencyid)) { $totalsell = $sellData->total_from_amount; $totalsell_rate = $sellData->rate; if($sellData->total_from_amount=='') { $totalsell = 0.00; } if($sellData->rate=='') { $totalsell_rate = 0.00; } } else { $totalsell = 0.00; $totalsell_rate = 0.00; } $report[] = array("currency"=>$currencycode, "buy"=>$totalbuy, "buyrate"=>$totalbuy_rate, "sell"=>$totalsell, "sellrate"=>$totalsell_rate); } $data['records'] = $report; } $this->load->model('company_model'); if($query = $this->company_model->list_company()) { $data['company_list'] = $query; } $this->load->model('branch_model'); if($this->input->post('company')) { $companyid = $this->input->post('company'); if($query = $this->branch_model->view_company_branch($companyid)) { $data['branch_list'] = $query; } } else { if($query = $this->branch_model->list_branch()) { $data['branch_list'] = $query; } } $this->load->view('report/daily_sales_summary', $data); }
Как это решить?
CI хранит сеансы в файле cookie. Если вы храните слишком много в файле cookie, вы получаете ошибки.
Установите CodeIgniter вместо использования сеансов DB или сохраните его в файле.
Сохранение данных сеанса в базу данных
CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(16) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) );
Примечание. По умолчанию таблица называется ci_sessions, но вы можете называть ее чем угодно, если вы обновляете файл application / config / config.php, чтобы он содержал имя, которое вы выбрали. После создания таблицы базы данных вы можете включить параметр базы данных в файле config.php следующим образом:
$config['sess_use_database'] = TRUE;
После включения класс сеанса будет хранить данные сеанса в БД.
Убедитесь, что вы указали имя таблицы в файле конфигурации:
$config['sess_table_name'] = 'ci_sessions';
Примечание. Класс Session имеет встроенную сборку мусора, которая очищает истекшие сеансы, поэтому вам не нужно писать свою собственную процедуру, чтобы сделать это.