На моем веб-сайте, посвященном виртуальному хостингу на HostGator, несколько дней назад я начал получать ошибку 500 во время интенсивного трафика (249 посещений, 148 429 обращений, 141 829 страниц, 723,01 МБ пропускной способности в тот день — многие люди обращались к запросам MySQL. хостинг, HostGator допускает только 25 запущенных процессов одновременно). Как только трафик уменьшился, ошибки исчезли.
Но когда я получил доступ к журналам ошибок того времени и дня, я обнаружил, что это было написано много раз:
[12-Oct-2014 16:37:16] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/user.cookies.php on line 5
Что я не понимаю, так это то, как ошибка «Идентификатор сеанса слишком длинная или содержит недопустимые символы» была вызвана интенсивным трафиком? Какое отношение имеет интенсивный трафик к символам идентификатора сессии?
В настоящее время сайт работает нормально. Я также посетил этот вопрос по Stackoverflow, но это не объясняет ошибку, оно только дает обходной путь. Пожалуйста, объясните, почему я получил ошибку ТОЛЬКО при интенсивном движении. Я хочу убедиться, что мой код правильный.
Ниже показано, как все мои PHP-страницы начинаются на сайте:
<?php
session_start();
require_once("user.cookies.php");
$username = $_SESSION["SESS_USERNAME"];
$id= $_SESSION["SESS_USERID"];
А вот и user.cookies.php
<?php
//redirect function
function returnheader($location){
$returnheader = header("location: $location");
return $returnheader;
}
if(!strlen($_SESSION["SESS_USERNAME"]) ){
//redirect
returnheader("login.php");
}
?>
Как уже упоминалось в этом вопрос
(…) cookie, который связывает вас с сгенерированным идентификатором сессии
сторона клиента. Если этот файл cookie изменен на недопустимый формат (кто-то
пытаюсь что-то использовать) PHP это заметит.
Других решений пока нет …