Codeigniter + Chrome error (ERR_RESPONSE_HEADERS_TOO_BIG). Как решить? - PullRequest
2 голосов
/ 07 июня 2011

Мое веб-приложение, разработанное с использованием 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);

}

Как это решить?

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

CI хранит сессии в куки.Если вы храните слишком много в файле cookie, вы получаете ошибки.

Установите CodeIgniter для использования сеансов БД вместо этого или сохраните его в файл.

1 голос
/ 23 апреля 2015

Сохранение данных сеанса в базе данных

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;

После включения класс Session будет хранить данные сеанса в БД.

Убедитесь, что вы также указали имя таблицы в файле конфигурации:

$config['sess_table_name'] = 'ci_sessions';

Примечание. Класс Session имеет встроенную сборку мусора, которая очищает сеансы с истекшим сроком действия, поэтому вам не нужно писать собственную подпрограмму для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...