Jump to content
php.lv forumi

Lietotāja vietas noteikšana


Pentiums

Recommended Posts

Lai kā to arī neuzrakstītu, šāda veida statistiska informācija, kas ietver arī visu citu lietotāju detaļu caurskati, nozīmēs bremzi, jo ir jāapskatās visi citi lietotāji un tā vieta jāizrēķina. Otra iespēja, protams, ir pie katrām izmaiņām šo vetu izklakulēt un visiem iesaistītajiem litotājiem to pamainīt, tb glabāt kā atsevišķu infu, bet tā būs bremze pie katras izmaiņas.

 

Šāda veida statistiska info nav domāta, lai to rādītu katrā solī. Lai lietotāji ver vaļā atsevišķu sava profila lapu vai kaut ko tādu un tur arī Tu to izrēķināsi. Tā kā to viņi vērs vaļā relatīvi reti, nebūs arī nekādu satraukumu par nevajadzīgu noslodzi. Šis ir tipisks piemērs sliktai prasībai, kas ved uz aplikācijas bremzēšanu un gala rezultātā nebūs laimīgs neviens - ne lietotāji, kam pie katra soļa bremzēs lapa, ne izstrādātājs, kuram mazgās galvu par to, ka viņa produkts bremzē.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Piekritīšu Gintam par to, ka šādu info vajadzētu izvadīt kādā profile lapā, bet vēl vari mēģināt glabāt spēlētāja punktus sesijas mainīgajā, tādējādi tev nebūs visu laiku jāizsauc query - to dari, pieņemsi, ik pēc 10 minūtēm, tas ir atjauno datus!

Edited by phpjanis
Link to comment
Share on other sites

būtībā to var realizēt ar aptuveni šādu mehānismu MySQL

 

mysql_query("SET @pos = 0");
mysql_query("UPDATE `players` SET `pos` = @pos:=(@pos+1) ORDER BY `points` DESC");

 

Vienīgā nianse, ka šādus jokus var laist tikai fonā un tikai pa kaut kādam laika intervālam - teiksim reizi 5 vai 10 minūtēs, atkarībā no vajadzības.

 

Kad šis tiek izpildīts, tad jau vairs atliek tikai selektēt pēc lietotāja identifikatora un iegūsi vietu laukā "pos".

Link to comment
Share on other sites

Šādi cilvēkiem ar vienādu punktu skaitu būs viena un tā pati vieta:

SELECT id,@rp:=@rp+1 as pos,if(@op=p,@p,@p:=@rp) as real_rank,@op:=p as points FROM test,(SELECT @p:=0,@op:=0,@rp:=0) as t ORDER BY p DESC;

Edited by codez
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...