PHP: Proč byste neměli spouštět session_start() automaticky na všech stránkách?

by Zdeněk Večeřa 0 Comments

Nejrůznější PHP tutoriály často radí, abyste na začátku skriptů zavolali session_start(). Bez něj totiž nemůžete pracovat se sessions. To je samozřejmě pravda. Často v návodech chybí důležité upozornění – sessions byste měli nastartovat pouze v případě, kdy s nimi opravdu potřebujete pracovat. Na grafech můžete vidět, jak se díky tomu sníží zátěž serveru, pokud se tím budete řídit.

Jestli používáte sessions pro přihlašování, tak byste je měli nastartovat:

  1. v případě, kdy se uživatel právě přihlašuje, tedy kdy uživatel zadal a odeslal přihlašovací údaje a vaše obslužná metoda úspěšně provedla ověření zadaných údajů.
  2. Anebo u právě přihlášeného uživatele, což poznáte podle přítomnosti cookie, která má session na starosti – typicky to poznáte podle existence proměnné:
$_COOKIE['PHPSESSID']

V ostatních případech nastartovat sessions je nejen zbytečné a nežádoucí. U běžných návštěvníků by server musel neustále generovat a ukládat session data, které vůbec nepotřebujete nepotřebujete.

Session data jsou ve výchozím nastavení PHP obyčejné soubory na disku. Pokud skript začne se session pracovat, tak zamkne session soubor pouze pro sebe a další skript, který chce pracovat se stejnou session (tedy session souborem), musí počkat, než jej ten předchozí odemkne.

Zápis do session souborů se standardně ukončí s ukončením skriptu, ale můžete to uspíšit zavoláním session_write_close() – což byste měli udělat vždy, když už se session nebudete pracovat. Nutno dodat, že pole $_SESSION bude dostupné pro čtení i po ukončení sessions.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..