/ / Jak duży ruch może spowodować "Identyfikator sesji jest za długi lub zawiera niedozwolone znaki" - php, mysql, session, cookies, error-log

Jak duży ruch może spowodować "Identyfikator sesji jest za długi lub zawiera niedozwolone znaki" - php, mysql, session, cookies, log błędów

Na mojej stronie internetowej na dzielonym hostingu na HostGator, kilkaKilka dni temu zacząłem otrzymywać komunikat o błędzie 500 podczas dużego natężenia ruchu (249 wizyt, 148 429 trafień, 141,829 stron, 723.01 MB w tym dniu - wiele osób zgłaszało zapytania MySQL, a na hostingu dzielonym HostGator zezwala tylko na 25 uruchomionych procesów czas). Gdy tylko ruch zmniejszył się, błędy zniknęły.

Ale kiedy przejrzałem dzienniki błędów tego czasu i dnia, znalazłem to wiele razy:

[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

Nie rozumiem jednak, w jaki sposób błąd "Identyfikator sesji jest zbyt długi lub zawiera niedozwolone znaki" spowodowany jest dużym ruchem? Co ma duży ruch związany z postaciami z identyfikatorem sesji?

Obecnie strona działa poprawnie. Odwiedziłem również to pytanie na Stackoverflow, ale nie wyjaśnia błędu, daje tylko obejście. Wyjaśnij, dlaczego błąd wystąpił TYLKO pod dużym natężeniem ruchu. Chcę się upewnić, że mój kod jest poprawny.

Poniżej znajduje się, jak wszystkie moje strony PHP zaczynają się na stronie:

<?php
session_start();
require_once("user.cookies.php");

$username = $_SESSION["SESS_USERNAME"];
$id= $_SESSION["SESS_USERID"];

A tutaj jest user.cookies.php

<?php

//redirect function
function returnheader($location){
$returnheader = header("location: $location");
return $returnheader;
}

if(!strlen($_SESSION["SESS_USERNAME"]) ){

//redirect
returnheader("login.php");
}

?>

Odpowiedzi:

0 dla odpowiedzi № 1

Jak wspomniano w tym pytanie

(...) ciasteczko, które łączy cię z wygenerowanym identyfikatorem sesji Strona klienta. Jeśli ten plik cookie zmieni się na nieprawidłowy format (ktoś jest próbując coś wykorzystać) PHP to zauważy.