vaiiii Posted December 12, 2008 Report Share Posted December 12, 2008 (edited) Tātad man ir uztaisīta login sistēma, kur sessijas keys tiek saglabats datubazē un pie katras lapas ielades man izpildas 4 kverijas kas atbild par sesijam 1. COUNT keys no db! keys ir primary 2. Ja 1 kverija atgriez skaitli 1 tad SELECT no online keys info (usera id,pedejas zinas laiks) select pec key 3. update users tabula pec users id, kur id ir primary, tiek atjaunots taims kad pedejo reizi kads action notika(lai citi redz ka online) 4. update sessesijas tabulu, tiek atjaunots laiks kad pedejo reiz actions kads bet ja users nosuta kadu vestuli tad tiek izpilditas 5 kverijas visas ieprieksejas un piektaa: 5. update sessijas tabula un tiek ielikts pedejas vestules laiks vai varetu visas siis kverijas saisinat lidz kadam 3? nezaudejot atrdarbibu, vai ari palielinot to?! vai ari man partaisiit ko? EDIT: vai ari neko nevajag labot un viss ir normali? Edited December 12, 2008 by vaiiii Link to comment Share on other sites More sharing options...
Aleksejs Posted December 12, 2008 Report Share Posted December 12, 2008 Sveiks! Nu, patiesībā ir diezgan grūti saprast. Piemēram kāpēc uzreiz otro punktu neizpildi? Un priekš kam 5, punkts? Vai tad tas jau neieskaitās 3 vai 4 ? Vispār, būtu labi izvērstāku to stāstījumu redzēt. :) Link to comment Share on other sites More sharing options...
vaiiii Posted December 12, 2008 Author Report Share Posted December 12, 2008 (edited) Tātad, ja es taisu otro punktu un ja vins agtriež NULL, tads sanaks ka usera nav, tas man der. Bet 5. kverija man ir atsevišķi tāpēc, ka pirmās 4 kverijas man ir vienā funkcijā kas atbild par to ielogosanos, un updeitu, ja ielogojies, un ja funkcija atgriež ka lietotajs ir ielogojies un sūta zinu, tad izpildas 5. kverija Man taisit tā: sesija(...,'$suta_zinu'){ select no sesiju tabulas if(ja nav null un nav vairak kaa viens){ if($suta_zinu){ update sesiju tabula (last action,vestule_laiks) }else{ update sesiju tabula (last action) } update useru tabula (last action,online) } } Man sanāk tagad ka izpildisies 3 kverijas kas atbildes tikai par to ka users ir ielogojies, tas ir normāli? nav par daudz? Edited December 12, 2008 by vaiiii Link to comment Share on other sites More sharing options...
Delfins Posted December 12, 2008 Report Share Posted December 12, 2008 kāpēc jāsadala? nepietiek ar to, ka updeito/insertē sessiju uzreiz ar laiku? tas arī ir tas pēdējais laiks.. neredzu jēgu čkeot, vai sūta emailu vai vēl ko... Link to comment Share on other sites More sharing options...
vaiiii Posted December 12, 2008 Author Report Share Posted December 12, 2008 Bet ja tiks taisits inserts, tad bus sesiju tabula jau 2 ieraksti ar tadu sesijas keyu.. un es domaju ka ar katru hitu tiks noslogots vairak serveris, jo tiks ievietots 1 ieraksts ar to key, bet ta ir tikai tas ieraksts vienu reizi, vai ari ja taisu insert, pirms tad tad vajag dzest araa veco ierakstu kur vecs laiks, tad sanaks jau 4 kverijas kaa var neredzet, jeegu cekot suuta vai nesuuta, tas man ir vajadzigs lai zinatu pedejas vestules laiku, lai varetu izsargaties pret spamu, floodu, kur tas laiks tiktu nemts pirms katras nosutisanas un salidzinats ar atlauto laika intervalu pret laiks-pedejaissutijums! Link to comment Share on other sites More sharing options...
codez Posted December 12, 2008 Report Share Posted December 12, 2008 http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html Link to comment Share on other sites More sharing options...
vaiiii Posted December 12, 2008 Author Report Share Posted December 12, 2008 http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html sim neredzu jeegu, man tik un ta vajag pirmo kveriju taisit select jo db glabajas usera_id kurs talak tiek izmantots un tad kada jega man taisit insert on duplicate ja var update kada jega tad man ir aizstat 2,3 kveriju ar divam insert? tas kaut ko uzlabos atrdarbibaa? Link to comment Share on other sites More sharing options...
Delfins Posted December 12, 2008 Report Share Posted December 12, 2008 (edited) tu pats vispār saproti ko gribi? if (suta_vestuli) { $sql_c[] = ' ,vestules_laiks '; $sql_v[] = ' ,'.current_time(); $sql_u[] = ' ,vestules_laiks = '.current_time(); } if (dara_x) { $sql_c[] = ' ,x_laiks '; $sql_v[] = ' ,'.current_time(); $sql_u[] = ' ,x_laiks = '.current_time(); } insert into user_sessions(user_id, session_id, last_time '..implode($sql_c).') values($_sess['user_id'], $_sess['sess_id'], current_time() '. implode($sql_v)) on duplicate key update session_id = $_sess['sess_id'] '.implode($sql_u) Edited December 12, 2008 by Delfins Link to comment Share on other sites More sharing options...
vaiiii Posted December 12, 2008 Author Report Share Posted December 12, 2008 Zinu ko gribu, tikai man sanak tapat 3kverijas 1. select lai dabutu usera id 2. insert on duplicate 3. insert on duplicate agrak 1.select lai dabutu usera id 2. update sesijas 3.update users Link to comment Share on other sites More sharing options...
Delfins Posted December 12, 2008 Report Share Posted December 12, 2008 1.) user_id - iekš sessijas. nav selekts 2.) kopīgs updeits pēc mana piemēra man sanāk viens updeits un neviens selekts (izņemot protams vestules laika parbaudes selektu) Link to comment Share on other sites More sharing options...
mounkuls Posted December 12, 2008 Report Share Posted December 12, 2008 (edited) Ja glabātu sesiju tur pat kur user_id, mierīgi var ar diviem vaicājumiem iztikt - SELECT un UPDATE. Varbūt pat nav tik kritiski ja last_action laiks glabājas tur pat? EDIT: nepiefiksēju par to vēstuļu sūtīšanu. Edited December 12, 2008 by mounkuls Link to comment Share on other sites More sharing options...
Recommended Posts