tomaac Posted March 25, 2009 Report Share Posted March 25, 2009 Nepieciešams mehānisms: ja lietotājs sāk rediģēt ierakstu X, tad tas nobloķējas (cits lietotājs nevar uzsākt šī ieraksta rediģēšanu - parādās paziņojums, ka ieraksts šobrīd tiek rediģēts un līdz ar to ir bloķēts). Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 25, 2009 Report Share Posted March 25, 2009 no kurienes shis ieraksts nak ?? no faila, no DB Bet vispar var noblokjet gan vienu gan otru... Quote Link to comment Share on other sites More sharing options...
vabole Posted March 25, 2009 Report Share Posted March 25, 2009 (edited) Reģistrē session_id vai uzģenerē nejaušu skaitli ar rand() , ja nesakrīt - die(). Edited March 25, 2009 by vabole Quote Link to comment Share on other sites More sharing options...
tomaac Posted March 25, 2009 Author Report Share Posted March 25, 2009 Ieraksti nāk no datu bāzes. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 26, 2009 Report Share Posted March 26, 2009 (edited) 1. varj. uz briidi noblokjee tabulas ierakstu 2. varj. ierakstaa uzlikt kjeksi, ka tabula ir aiznjemta SELECT editets FROM xxx parbaudam vai nav 1, ja nav tad talak Update table xxx SET editets=1 SELECT * FROM xxx --> savacam datus UPDATE xxx SET izlabotie dati.... , editets=0 ne parak labs variants, jo daudz Kveriju, pie liela apjoma var sanakt gljuks, ka dabuun ka nav Editets , bet kads cits paspej updeitot... --- skaties sheit, varbuut kautko atrodi tb virziens kur meklet 'LOCK record' Edited March 26, 2009 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
codez Posted March 26, 2009 Report Share Posted March 26, 2009 Grey_Wolf, bet ko tavā 2. variantā, ja viens labo, labo un šim apnīk un aiztaisa browseri? Kurš tad atliks ķeksi, ka vairs neviens nelabo ierakstu? Var darīt tā: ieliec pie ieraksta, ka laiku, kad pēdējo reizi aktivizēta labošana. Savukārt labotāja pusē, piemēram, reizi minūtē ar ajax aizsūti, ka ieraksts tiek labots. Savukārt, lai noteiktu vai var ierakstu labot, salīdzini vai laika starpība starp šo brīdi un pēdējo labošanas aktivizāciju ir lielāka par 5 minūtēm. Ja ir, tad attiecīgi ieraksts vairs netiek labots un var labot. Savukārt, ja ieraksts tiek iesūtīt un saglabāts, tad var uzreiz atmest laiku pa 5 minūtēm atpakaļ, lai nākamais uzreiz var turpināt labot. Šādā veidā, ja kāds aizvērs browseri pier iekasta labošanas, ieraksts nenobloķēsies un pēc 5 minūtēm būs atkal pieejams labošanai. Laikus 1 un 5 minūtes pielāgot pēc vēlmēm un vajadzībām. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 26, 2009 Report Share Posted March 26, 2009 (edited) Grey_Wolf, bet ko tavā 2. variantā, ja viens labo, labo un šim apnīk un aiztaisa browseri? Kurš tad atliks ķeksi, ka vairs neviens nelabo ierakstu? Es jau mineju ka nav labs variants. Jaa laiks ir vajadziigs, Bet tomer labak izmantot GET_LOCK iebuuveto f-ju, tur standartaa avr uzstaadiit timeOutu ... kautgan ieraksta labosana var aiznjemt ilgaku laiku nekaa nepieciesams.. pastav velviens variants--> paspeleties ar tranzakcijaam ... edit: tomaac, jau nav noraadijis kadi tie dati buus, vai tos labos useris ar rocinjam, vai usera galaa tiks veiktas kadi apdeiti ar skriptu paliidzibu... pirmajaa gadiijuma, nekas netliks kaa vien veidot lauku ar ierkastu (labo/nelabo [ var timestampu] ), otrajaa varetu izmantot GET_LOCK/ vai tranzakcijas.. Edited March 26, 2009 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.