Ukládání sessions ve filesystemu
- maarlin
- Člen | 207
Napadlo mě, že by bylo vhodné se zamyslet nad nějakým lepším systémem
ukládání sessions, který by zabránil, že se vyskytne v jedné složce
tisíce souborů… které je pak někdy dost nemožné mazat…
Na serveru s velkým trafficem a v „horším případě“ s nastavenými
sessions na dlouhou dobu taková skutečnost může nastat dost hravě…
Vím třeba že e-shop systém Magento (co jede na Zendu) to má řešené dělením do složek dle prvních dvou písmen… např. z následujícího:
i59ouvn8jlibdrh5eu6uvoooh2
ir4v70lbg33d98s9tsv9pv92g3
cflkik8nqpqojb49mn6arq6302
j0cv0r0hf7i684d52vhemr8805
ir6kulj9eudtr0am5bm57aib67
irt8tn4ld6etqeof3kj26iitp0
by vzniklo následující:
/i5/i59ouvn8jlibdrh5eu6uvoooh2
/ir/ir4v70lbg33d98s9tsv9pv92g3
/ir/ir6kulj9eudtr0am5bm57aib67
/ir/irt8tn4ld6etqeof3kj26iitp0
/cf/cflkik8nqpqojb49mn6arq6302
/j0/j0cv0r0hf7i684d52vhemr8805
Existuje už něco takového v Nette? Klidně bych se do toho pustil, ale nechci mít pocit, že znova vynalézám kolo :-)
- mcmatak
- Člen | 504
open(x:\web/../app/../data/sessions\2\u\sess_2umjmrqhg5anf0flg61qo47ri0, O_RDWR) failed: No such file or directory (2)
asi mi něco uniklo, máte někdo použitelný překlad?
In order to use N you must create all of these directories before use.
jako že si mám ty adresáře dopředu vytvářet? coto?
session.save_path defines the argument which is passed to the save handler. If you choose the default files handler, this is the path where the files are created. See also session_save_path().
There is an optional N argument to this directive that determines the number
of directory levels your session files will be spread around in. For example,
setting to ‚5;/tmp‘ may end up creating a session file and location like
/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . In order to use N you
must create all of these directories before use. A small shell script exists in
ext/session to do this, it's called mod_files.sh, with a Windows version called
mod_files.bat. Also note that if N is used and greater than 0 then automatic
garbage collection will not be performed, see a copy of php.ini for further
information. Also, if you use N, be sure to surround session.save_path in
„quotes“ because the separator (;) is also used for comments in php.ini.
Warning
If you leave this set to a world-readable directory, such as /tmp (the default), other users on the server may be able to hijack sessions by getting the list of files in that directory.
Note: Prior to PHP 4.3.6, Windows users had to change this variable in order to use PHP's session functions. A valid path must be specified, e.g.: c:/temp.
- mcmatak
- Člen | 504
a jak se to bude spouštět? ručně nebo cronem? takže pro každý web budu vytvářet další crony? nehledě na to, že neexistence dir jednoduše způsobí pád aplikace, takže když z nějakého důvodu zmizí, např. chytrý panel v debug baru co maže sessions atd… no moc se mi to nelíbí
jestli by nebylo jednodušší zachytávat pád a dir vytvořit v nette, ale byla by to další vrstva navíc no
- mcmatak
- Člen | 504
btw. k tomu množství souborů, jednou jsem se o tom bavil s jedním rusem co dělá nějaký filesystem, a prý dnešní moderní filesystémy ext3 atd. krom prý RaiserFS který je nějaký na …, tak není problém ve výkonu v XY desítkách tisíc souborů, je to prý díky B+ tree či co… do toho nevidím
samozřejmě vždy se také snažím produkty, články a další obrázky ukládat do chunků, neříkám, že tomu věřím, ale dnes už je to prý zbytečná preoptimalizace
- David Grudl
- Nette Core | 8218
Zatím jsem to nikdy nepoužíval, ale asi bych to řešil tak, že bych si adresář vytvořil před nastartováním session podle tvaru session id v cookie. Samozřejmě chce to zkontrolovat správný tvar téhle cookie. A mazání lze řešit cronem.
- mcmatak
- Člen | 504
nj ale to je právě ono, představ si že máš systém který dokola kopíruješ a přibyde ti další potřeba někam zadávat cron a teď na něj zapomeneš no… s každým požadavkem testovat jestli dir existuje se mi moc nelíbí … přijde mi to lepší v nette zachytávat … když nette chytne exception že dir není zapisovatelný … ale chápu že je to další vrstva (možná zbytečná) … zatím jsem se rozhodl to nepoužívat … i když některé weby by si to asi zasloužili podle obav které tady slyším, nasekat tak velké množství sessions není velký problém na navštěvovaném webu, zvlášť když expir. je měsíc
- Dragon Jake
- Člen | 20
nehledě na to, že pak webhosteři často nadávají, když jim zálohovací skripty běží půl dne