Codeigniter бросает ошибку 520 CloudFlare при использовании сеанса

Я использую Codeigniter с облачным флагом и получаю 520 ошибок при сохранении значения пользователя в сеансе во время входа в систему.

Вот функция входа:

function check_login_submit($post_data) { if ($post_data) { $mob = trim($post_data['mob']); $password = trim($post_data['password']); $sql = "Select * from table where phone='$mob' and password='$password'"; $query = $this->db->query($sql); $user = $query->row(); if ($query->num_rows() == 1) { if ($user->status == 1) { $this->session->set_userdata('mem_id', $user->id); $this->session->set_userdata('mem_last_login_date', $user->last_login_date); $this->session->set_userdata('mem_created_on', $user->created_on); //-- Update last login of successfull Login $sql = "update table set last_login_date = NOW() where id=$user->id"; $query = $this->db->query($sql); return TRUE; } } else { return FALSE; } } } 

Если я остановлю значение сохранения в пользовательских данных сеанса, чем он будет работать нормально, но с облачным облаком сеанса дайте мне страницу ошибок 502.

Пожалуйста, заранее сообщите об этом за ваше время и поддержку.

Если кто-то еще сталкивается с этой проблемой, я придумал решение, которое включает расширение основной библиотеки сессий, что в конечном итоге уменьшает количество вызовов sess_write() и расширением, _set_cookie() .

MY_Session.php:

 class MY_Session extends CI_Session { function set_userdata($newdata = array(), $newval = '', $write_session = true) { if (is_string($newdata)) { $newdata = array($newdata => $newval); } if (count($newdata) > 0) { foreach ($newdata as $key => $val) { $this->userdata[$key] = $val; } } // Do not write the session (set the cookies) unless explicitly specified if ($write_session) { $this->sess_write(); } } function set_flashdata($newdata = array(), $newval = '') { if (is_string($newdata)) { $newdata = array($newdata => $newval); } if (count($newdata) > 0) { foreach ($newdata as $key => $val) { $flashdata_key = $this->flashdata_key.':new:'.$key; $this->set_userdata($flashdata_key, $val, false); // Do not update the cookie in the foreach } } // Save the cookie now that all userdata has been set $this->sess_write(); } function _flashdata_mark() { $userdata = $this->all_userdata(); $newUserData = array(); $userDataToUnset = array(); foreach ($userdata as $name => $value) { $parts = explode(':new:', $name); if (is_array($parts) && count($parts) === 2) { $new_name = $this->flashdata_key.':old:'.$parts[1]; $newUserData[$new_name] = $value; $userDataToUnset[$name] = ''; // Cookies were originally set in this loop. Moved to the end of the function } } // Save all changes outside of the loop if (count($newUserData) > 0) { $this->set_userdata($newUserData); $this->unset_userdata($userDataToUnset); } } } 

Ошибка 520 обычно указывает на то, что возвращаются большие файлы cookie или заголовки, которые поражают пределы прокси-буфера на нашем конце. Файл HAR, отправленный в нашу службу поддержки, поможет нам выяснить, в чем проблема.