Even een klein vraagje,
als ik een session_regenerate_id(true) doe, moet ik toch maar 1 sessie terugzien in mijn session-path?
Volgens de manual wel: http://nl.php.net/manual/en/function.session_regenerate_id
Maar nu heb ik het volgende script:
Ik heb zelf Debian Etch Linux, dus sessies worden standaard opgeslagen in /var/lib/php5.
Ervan uitgaande dat deze directory helemaal LEEG is (rm -rfv *), gaan we dit script uitvoeren.
Wat we zullen zien is dat er maar 1 sessie in staat:
Maar nu houden we in Internet Explorer (of Firefox) de F5 knop een paar seconden in (stresstest
)
en warempel: nu zien we dat er ineens een hoop sessies aangemaakt zijn die er eigenlijk niet horen te zijn, want de parameter voor session_regenerate_id staat op TRUE, dus vervang oude sessies:
Mijn vraag is nu: hoe kan dit?
Het lijkt wel alsof de PHP engine door de snelle requests geen tijd heeft om de sessies te vervangen ofzo?
Ik heb een bug ingediend bij php.net (http://bugs.php.net/bug.php?id=42899) maar er werd mij verteld dat het te maken had met de garbage collector.
Ik ben het daar niet mee eens, want als ik gewoon de HTTP-request 1 keer per seconde doe gaat het wel gewoon goed (Dus dan zie ik gewoon één sessie in de map staan).
Wat doet het script bij jullie? En is dit een bug of een feature??
als ik een session_regenerate_id(true) doe, moet ik toch maar 1 sessie terugzien in mijn session-path?
Volgens de manual wel: http://nl.php.net/manual/en/function.session_regenerate_id
Maar nu heb ik het volgende script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <?php session_start(); $old_sessionid = session_id(); session_regenerate_id(true); $new_sessionid = session_id(); echo "Old Session: $old_sessionid<br />"; echo "New Session: $new_sessionid<br />"; echo "Please look for the amount of newly created sessions in " . session_save_path(); ?> |
Ik heb zelf Debian Etch Linux, dus sessies worden standaard opgeslagen in /var/lib/php5.
Ervan uitgaande dat deze directory helemaal LEEG is (rm -rfv *), gaan we dit script uitvoeren.
Wat we zullen zien is dat er maar 1 sessie in staat:
code:
1
2
3
4
| testing:/var/lib/php5# ls -al drwx-wx-wt 2 root root 4096 2007-10-09 11:38 . drwxr-xr-x 40 root root 4096 2007-06-05 17:46 .. -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_bf25d463bd2427077362a6a5c3322a8c |
Maar nu houden we in Internet Explorer (of Firefox) de F5 knop een paar seconden in (stresstest
en warempel: nu zien we dat er ineens een hoop sessies aangemaakt zijn die er eigenlijk niet horen te zijn, want de parameter voor session_regenerate_id staat op TRUE, dus vervang oude sessies:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| testing:/var/lib/php5# ls -al drwx-wx-wt 2 root root 4096 2007-10-09 11:38 . drwxr-xr-x 40 root root 4096 2007-06-05 17:46 .. -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_05d70781a104576f23543b3299b7d05e -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_0d6768211b29ad84164fd6d070c3762e -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_12dd6823740e2c84b330291e1f60c827 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_1421b917ab0666ccc0c9d18af389b4ca -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_20df609512f16755cf4dd1eafffe3814 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_252628d760472fe02722826198751414 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_28133ab73aceaeccb23469bc73da1981 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_2d37a949a7dd1afba9bd1e4f5c1f0531 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_43228c7f103201826c7b2d6bbc78d248 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_4a66e1f7c0d07ba18a7fa9dd55f2d49c -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_52c5d429af6f70f67d09b17a1040787d -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_58ed4a00f2109cf5eb56e43d93efb53e -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_5e786f82712a14d8f28848c91a8ebbf5 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_6171d6c50102d4bb5431f2df3ef350fe -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_6d44894c28bf9205181d34069fb2d04b -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_769fd1220a7172970ea5c7ea0d430d4a -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_8ea18f64b65855c1f32001fab4914c8e -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_8ff371c1c45baa9a8aea16cb06139809 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_921cc5fa79e853887fd3e9ea198a1f80 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_939158cbe08761c5bf69b1a8be9103bb -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_95a8e110ed80e63025a824f837268b17 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_97c6da00dee72e2ccca73f3a29e8bb9d -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_980c5f99114e6e6cac7fb1cebed3ede1 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_ab81e84b43f7cd0e0c22e550855908a4 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_ad66254ba12421449dd1572b6f7a9393 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_b4f679b4d811464a25598bcb6ee6d795 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_b837bc487e12b7c2883b57777c79a623 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_d6d766f8fd49ac666b91ea7265b8a1eb -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_dc7acb0dc58d7954d0a077b5c1878ee8 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_e9611bdca067a9d88a3a54ce87f6acf1 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_f862d38b27516300e19f39a5156b8789 -rw------- 1 www-data www-data 0 2007-10-09 11:38 sess_fd61f58bbf408d149626727f5ed2ab3d |
Mijn vraag is nu: hoe kan dit?
Het lijkt wel alsof de PHP engine door de snelle requests geen tijd heeft om de sessies te vervangen ofzo?
Ik heb een bug ingediend bij php.net (http://bugs.php.net/bug.php?id=42899) maar er werd mij verteld dat het te maken had met de garbage collector.
Ik ben het daar niet mee eens, want als ik gewoon de HTTP-request 1 keer per seconde doe gaat het wel gewoon goed (Dus dan zie ik gewoon één sessie in de map staan).
Wat doet het script bij jullie? En is dit een bug of een feature??