Cinis Posted February 28, 2014 Report Share Posted February 28, 2014 īss un konkurēts jautājums? vai šī funkcija ļoti noslogo serveri? setTimeout(funkcija(),1000); ik pa sekundei tiek pārbaudīta datu bāzes ieraksti, ja ir lielāks par viens tad vnk izmet skaitu un neko vairāk! Quote Link to comment Share on other sites More sharing options...
e-remit Posted February 28, 2014 Report Share Posted February 28, 2014 īss un konkurēts jautājums? Nav konkrēts. Neviens cits nezina, ko dara "funkcija()", izņemot to, ka "tiek pārbaudīta datu bāzes ieraksti", kā arī nav zināms, kur tā funkcija izpildās. ja to skriptu izpilda pārlūks, tad tas pats nevar pārbaudīt datubāzi, bet tam jātaisa servera pieprasījumi. reizi sekundē - tas ir daudz. ja skriptu izpilda serveris, piemēram, ar node.js, tad viss atkarīgs no SQL pieprasījuma un tamlīdzīgām lietām. par cik jautājums ir nekonkrēts, īsā atbilde ir: šī funkcija ĻOTI noslogo serveri. Quote Link to comment Share on other sites More sharing options...
Cinis Posted February 28, 2014 Author Report Share Posted February 28, 2014 paldies par izsmeļošo atbildi :) Quote Link to comment Share on other sites More sharing options...
draugz Posted March 4, 2014 Report Share Posted March 4, 2014 Man ir aizdomas, ka funkcija() Izpildīsies tikai vienreiz :), jo tā tiek izpildīta vēl pirms pievienošanas setTimeout... Quote Link to comment Share on other sites More sharing options...
e-remit Posted March 4, 2014 Report Share Posted March 4, 2014 draugz, tev taisnība, bet tāpat skaidrs, ka tas ir nesakarīgs koda izgriezums, tāpēc vadījos pēc pārējā teksta. ;) Quote Link to comment Share on other sites More sharing options...
jurchiks Posted March 5, 2014 Report Share Posted March 5, 2014 Nū, vēl jau aizmirsāt, ka setTimeout nav tas pats, kas setInterval. Quote Link to comment Share on other sites More sharing options...
codez Posted March 5, 2014 Report Share Posted March 5, 2014 Varbūt setTimeout izsauc funkciju, kura atgriež funkciju, kura izsauc setInterval ar funkciju, kura atgriež funkciju, kurā regulāri taisa ajax pieprasījumus. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted March 5, 2014 Report Share Posted March 5, 2014 zbis Quote Link to comment Share on other sites More sharing options...
Cinis Posted March 5, 2014 Author Report Share Posted March 5, 2014 draugz, tev taisnība, bet tāpat skaidrs, ka tas ir nesakarīgs koda izgriezums, tāpēc vadījos pēc pārējā teksta. ;) funkcija: function getStatus() { $.ajax({ type: "POST", url: "fails.php", data: "user_id="+ SESIJAS_ID, success: function(msg) {$("#news_status").html(msg);} }); setTimeout("getStatus()",1000); } fails.php <? if(isset($_POST['user_id'])) { require "config.php"; require "functions.php"; $my_friends_count = mysql_result(mysql_query("SELECT COUNT(*) FROM posts WHERE user_id = '{$_POST['user_id']}' AND time > 'PEDEJAIS_LAIKS_KAD_BIJIS_ONLINE'"),0,'COUNT(*)'); if($my_friends_count > 0) {print $my_friends_count;} } ?> tipa funkcija izvelk rakstu skaitu janav kko redzējis un jair tad uzmet skaitu, tipa kkas līdzigs Twitterim vai draugiem.lv runā atkārtošos vai tas varētu kaitēt servera darbībai? jo ja kaitēs doma ir uzlikt lai čeko ik pēc 15sec nevis 1sec Quote Link to comment Share on other sites More sharing options...
e-remit Posted March 5, 2014 Report Share Posted March 5, 2014 (edited) Par js - kā minimums, kodu `setTimeout("getStatus()",1000);` ieliec "success" funkcijā, t.i. nākamais pieprasījums būs sekundi pēc tam, kad saņemta iepriekšējā pieprasījuma atbilde. Savādāk var gadīties tā, ka viens pieprasījums izpildās sekundes 3, nākamais 1 sekundi un pirmā pieprasījuma atbilde tiks apstrādāta vēlāk, kā otra. Par servera galu - pieprasījums ar salīdzināšanu "AND time > 'PEDEJAIS_LAIKS_KAD_BIJIS_ONLINE'" potenciāli ir lēns (jāskatās explain). Ja onlainā sēdēs 50 lietotāji un būs daudz šādu paralēlu pieprasījumu, tāpēc padomā par kešošanu, Un vēl tev ir dažas problēmas! SQL teikumā nevajadzētu likt mainīgos pa tiešo no $_GET, $_POST un $_COOKIE (SQL injection). mysql funkciju vietā izmanto mysqli vai PDO funkcijas, jo mysql funkcijas ir deprecated. Kaut kas dīvains notiek koda loģikā. Kā var būt lietotājam posti ar datumu pēc tam, kad viņš ir bijis onlainā? Vai arī šim lietotājam parādās posti no citiem lietotājiem? Vai šajā gadījumā nenotiek postu dublēšana datubāzē? Kas īsti ir postotais user_id? Ja tā lietotāja ID, kurš ir autorizējies, tad viņa ID būtu jāņem no sesijas, nevis caur POST. Edited March 6, 2014 by e-remit Quote Link to comment Share on other sites More sharing options...
jurchiks Posted March 5, 2014 Report Share Posted March 5, 2014 (edited) function getStatus() { $.ajax({ type: "POST", // vajadzētu būt GET vispār, tu neposto datus, tu tos pieprasi url: "fails.php", data: "user_id="+ SESIJAS_ID, // vai tad server-side $_SESSION['id'] nav? success: function(msg) { $("#news_status").html(msg); } }); } setInterval(getStatus, 1000); Edited March 5, 2014 by jurchiks Quote Link to comment Share on other sites More sharing options...
Cinis Posted March 6, 2014 Author Report Share Posted March 6, 2014 (edited) jurchiks par GETiem izlabošu un SESIJAS_ID tas bija parādīts uzskatāmi, jo tā fukcijai tur vēl nedaudz vairāk rindiņu. e-remit paldies par ieteikumu ņemšu vērā :) Kaut kas dīvains notiek koda loģikā. Kā var būt lietotājam posti ar datumu pēc tam, kad viņš ir bijis onlainā? Vai arī šim lietotājam parādās posti no citiem lietotājiem? Vai šajā gadījumā nenotiek postu dublēšana datubāzē? Kas īsti ir postotais user_id? Ja tā lietotāja ID, kurš ir autorizējies, tad viņa ID būtu jāņem no sesijas, nevis caur POST. reāli jau atbildēji ar otro jautājumu, ir tā ka uzmetīsies skaits no tiem kam viņš seko un ir atstāta lapa online, bet nerefresho uzmet cik ir jauni posti postotais user_id ir lietotāja id, kuriem viņš seko par to post bus tā ka turpmāk tikai ajag bez nosūtitiem datiem bet meklēs sākuma kadiem viņš seko un tad filtrē vai ir jauni posti ceru ka domu sapratāt :) Edited March 6, 2014 by Cinis Quote Link to comment Share on other sites More sharing options...
Kavacky Posted March 6, 2014 Report Share Posted March 6, 2014 Nekas tur serveri nenoslogos. 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.