D7: Session probléma

Dean képe

Sziasztok!

Egy saját modul fejlesztése kapcsán futottam bele abba a problémába, hogy amikor egy be nem jelentkezett user be akar lépni, akkor:
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ... for key 'PRIMARY': UPDATE {sessions} ... drupal_session_regenerate() függvényben (.../includes/session.inc 393 sor).

Több hete nem leljük a megoldást.
Átnyálaztam a nemzetközi fórumokat ki futhatott még ebbe bele, de nem találtam megoldást.

Környezet: D7: Commerce kickstart (+SSL)
A modulom ugyan meghívhatja a drupal_session_start() függvényt, de csak ha nincs session.

A userek ki- és belépkedésével sehol máshol nincs probléma, csak azokon a részeket, ahol a modulom is működik.

Adatbázisban is néztem a session táblát és a Drupal logban is figyelgettem.
Miután a user sikeresen belépett, utána jön ez a PDOException-ös hiba.

Sikeres, hiszen ha a hibaüzenet ellenére a user ráfrissít az oldalra minden sikerült végül is. :)
Nem tudok rájönni miért akar úgy update-elni a rendszer egy sessiont, hogy a primary key-ek ezzel elvesztenék uniq jellegüket.
Gondolom a session user_id-t kéne 0-ról az aktuálisra userére állítania, de közben valami történik (vagy nem történik).

Tud valaki segíteni hogy legalább kb merre kéne keresni a probléma okát?

Drupal verzió: 
szantog képe

Nekem ez a drupal_session_start()-ot hív a modulunk problémának tűnik. A drupal_session_start() az kőkemény bootstrap rész, nehezen tudok elképzelni olyan funkcionalitást, aminek ezt meg nekünk kéne hívogatni. Ha meg mégis, akkor egy session_api modult talán érdemes lehet bevonni a játékba.

Ez így csak egy tipp, inkább azt kérdezném, hogy miért kell a te modulodnak drupal_session_startot kezelni? Mi a konkrét feladat?

1
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

Dean képe

Egy Online Learning System az a modul család amit fejlesztünk.
A Session-ben vándoroltatunk jó pár információt.
Ez tökéletesen működik is, csak amikor login nélkül használják, akkor is kell a session.
Be kellett tenni ezt a részt a modulba:

  1. if(!isset($_SESSION)){
  2. drupal_session_start();
  3. }

Ugyanis nincs mindig session.
Az pedig nagyon kéne. :)

Próbáltunk lecserélni erre is: session_start();
de ugyanaz az eredmény.

Hol hibáztunk? Mit kellett volna másképp?

0
0
szantog képe

sztem így kéne:

  1. if(!drupal_session_started()){
  2. drupal_session_start();
  3. }

+ tényleg szétnézni a session_apiban, ha ilyesmire van szükségetek.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

Dean képe

Kipróbáltam ezt a verziót is, de sajnos nem hozott eredményt.
Azért nagyon köszönök minden tippet, helpet, ha van még ne tartsátok magatokban! :)
Közben tanulmányozgatom a session api-t is hátha leesik valami. :)

0
0
Dean képe

Leírom a megoldást.
Session API modul nélkül:

  1. if(!drupal_session_started()){
  2. drupal_session_regenerate();
  3. }
0
0
york képe

Es ha csak a $_SESSION valtozoban matatsz a drupal nem indit magatol sessiont?

0
0
Dean képe

Úgy vettük észre, hogy login nélkül a session PHP-ból nem elérhető.

0
0