Autor Zpráva
mou
Profil *
Chtěl bych se zeptat,
existuje v php něco jako permanentní úložiště proměnných? Abych nemusel v každém skriptu načítat stejná statická data z databáze? Data by se načetla třeba jen 1x denně a byla by uložena v proměnných, které bych mohl rovnou ze skriptů volat.

Díky
AM_
Profil
a kde by měla ta data být uložená? v paměti? na disku? zamysli se nad principem PHP a počítače možná samotného - Do paměti se tvůj skript tahá pouze na jeho vykonání a pak se zase hned unloaduje, takže při každém natažení skriptu je nutné vše zavést znovu.

Můžeš použít třeba nějakou diskovou cache nebo v extrémním případě memcached (paměťová cache), ale mám pocit, že tvůj případ bude spíš to, kdy programátor začíná něco tušit o optimalizaci a má chuť všechno psát tak, aby to běželo 2 milisekundy místo 5ti, nejsme už ale v době 386ek a taková horlivá optimalizace je spíš ztráta tvého času (sám si spočítej, kdybys na tom dělal hodinu, musel by tvůj web prodělat 1 200 000 návštěv, aby se taková optimalizace řekněme vyplatila; ale ono v praxi je stejně lidem jedno, zda načtení webu trvá 100 nebo 103 miliseknud).
Nox
Profil
Souborem nebo APC, memcached...
mou
Profil *
Nox:
díky APC bude ideální řešení
Nox
Profil
Jestli je dostupné... ale stejně viz AM
imploder
Profil
mou:
Ano, tzv. sessions. Je to úložiště záznamů ve tvaru klíč=hodnota. Session se vytvoří funkcí session_start(). Ve výchozím nastavení se na serveru ukládá do souborů, ale dá se i zařídit ukládání do databáze. Když se session vytvoří, prohlížeč dostane jeho identifikátor (tzv. SID - ve formě cookies nebo jako součást URL) a pomocí tohoto identifikátoru pak k sessionu přistupuje.

V PHP se k sessionu dá přistupovat $_SESSION[] - takhle:
// zapsání hodnoty:
$_SESSION['barva'] = 'zelena';
// přečtení a zobrazení hodnoty:
echo "barva uložená v sessionu je: " . $_SESSION['barva'];

Session se zruší funkcí session_destroy().

Viz PHP: Sessions - Manual.

EDIT: aha, tak asi jsem mimo

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0