Autor | Zpráva | ||
---|---|---|---|
Joker Profil |
#1 · Zasláno: 3. 3. 2010, 19:55:37
Shoty:
„chyba snad nenastane“ Mno, "chyba snad nenastane" opravdu není dobrý způsob řešení chybových stavů. „PHP script je udělán tak že zkontroluje MySQL a jestli email existuje tak vrátí 1 a když neexistuje tak 0. Tento script se vykoná rychle (není vůbec složitý)“ A když bude někdo mít nestabilní připojení a ta komunikace přes síť prostě potrvá dlouho? Když bude přetížený server? Když dlouho potrvá komunikace mezi PHP a databází? Nebo když bude nedotupný databázový server? Ten skript může být za běžných okolností rychlý, přesto může být spousta scénářů, kdy doručení výsledku na klienta může trvat dlouho. |
||
Chamurappi Profil |
#2 · Zasláno: 3. 3. 2010, 20:02:44 · Upravil/a: Chamurappi
Reaguji na Shotyho:
„Když člověku vypadne připojení tak se nic nestane.“ Až na to, že mu na několik desítek sekund zakousneš prohlížeč. „ale mám tam složité podmínky takže to musím takhle zařadit do dokumentu“ Nemusíš. V callbacku může být cokoliv. Pochybuji, že by tvůj skript nešel snadno upravit. „navíc se nic špatného stát nemůže“ To zní skoro jak poslední slova před smrtí :-) |
||
Shoty Profil * |
#3 · Zasláno: 3. 3. 2010, 20:02:51
achjo, když chyba nastane tak se nic strašného nestane, vím co kóduju a nejsem ten typ co jen kopíruje ani neví co. Všechny kódy jsi napíšu sám a když nastane chyba tak se nic strašného nestane.
Joker: No tak se to jen bude dlouho načítat (maximálně 1 sekundu) to snad každý vydrží. Mám to celý vymyšlený já jsem rád že mě Chamurrapi pomohl a těď mě tu píšete že dělám chybu, přitom to je celý bezpečný a vpohodě, jestli to někdo chcete vidět na vlastní oči tak vám dám TeamViewer. Tímto bych uzavřel diskusi. |
||
Shoty Profil * |
#4 · Zasláno: 3. 3. 2010, 20:04:23
[#2] Chamurappi
Jako upravit by určitě šel, respektive zjednodušit no xD function testit(inputvalue, type) { getID("error_testing").innerHTML = "0"; if (type == 'email') { if (inputvalue == '') { getID('img_email').src = 'images/icons/cross.png'; getCLASS('email_error_print').innerHTML='* Musí být vyplněné'; $("#error_email").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { var result=inputvalue.search(/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/); if (result == -1) { getCLASS('email_error_print').innerHTML='* Je neplatný'; getID('img_email').src = 'images/icons/cross.png'; $("#error_email").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { var returned_email_exist; $.ajax({ async: false, type: "GET", url: "checks/email_exist.php", data: "email=" + inputvalue, success: function(returned_email_value){ returned_email_exist = returned_email_value; } }); if (returned_email_exist == "1") { getCLASS('email_error_print').innerHTML='* Je již registrován'; getID('img_email').src = 'images/icons/cross.png'; $("#error_email").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { getID('img_email').src = 'images/icons/thick.png'; $("#error_email").fadeOut(300); } } } } if (type == 'username') { if (inputvalue == '') { getID('img_username').src = 'images/icons/cross.png'; getCLASS('username_error_print').innerHTML='* Musí být vyplněné'; $("#error_username").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { if (inputvalue.length <= '2') { getCLASS('username_error_print').innerHTML='* Musí mít minimálně 3 znaky'; getID('img_username').src = 'images/icons/cross.png'; $("#error_username").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { var result=inputvalue.search(/^[0-9A-Za-z-_.]+$/); if (result == -1) { getCLASS('username_error_print').innerHTML='* Nesmí obsahovat speciální znaky'; getID('img_username').src = 'images/icons/cross.png'; $("#error_username").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { var returned_user_exist; $.ajax({ async: false, type: "GET", url: "checks/username_exist.php", data: "jmeno=" + inputvalue, success: function(returned_user_value){ returned_user_exist = returned_user_value; } }); if (returned_user_exist == "1") { getCLASS('username_error_print').innerHTML='* Je již registrováno'; getID('img_username').src = 'images/icons/cross.png'; $("#error_username").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { getID('img_username').src = 'images/icons/thick.png'; $("#error_username").fadeOut(300); } } } } } if (type == 'heslo') { if (inputvalue == '') { getID('img_heslo').src = 'images/icons/cross.png'; getCLASS('heslo_error_print').innerHTML='* Musí být vyplněné'; $("#error_heslo").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { if (inputvalue.length <= '3') { getCLASS('heslo_error_print').innerHTML='* Musí mít minimálně 4 znaky'; getID('img_heslo').src = 'images/icons/cross.png'; $("#error_heslo").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { var result=inputvalue.search(/^["0-9A-Za-z-_~!@#$%^&*()_+-?=<>\|.:"]+$/); if (result == -1) { getCLASS('heslo_error_print').innerHTML='* Obsahuje nepovolené znaky'; getID('img_heslo').src = 'images/icons/cross.png'; $("#error_heslo").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { getID('img_heslo').src = 'images/icons/thick.png'; $("#error_heslo").fadeOut(300); if (getNAME('heslo2').value) { if (inputvalue != getNAME('heslo2').value) { getID('img_heslo2').src = 'images/icons/cross.png'; $("#error_heslo2").fadeIn(1000); getID("error_testing").innerHTML = "1"; } else { getID('img_heslo2').src = 'images/icons/thick.png'; $("#error_heslo2").fadeOut(300); } } } } } } |
||
Joker Profil |
#5 · Zasláno: 3. 3. 2010, 20:04:58
Shoty:
„No tak se to jen bude dlouho načítat (maximálně 1 sekundu)“ Z čeho vyplývá to "maximálně 1 sekundu"? |
||
Shoty Profil * |
#6 · Zasláno: 3. 3. 2010, 20:06:18
A kdes na tom byl aby se MYSQL QUERY načítal dlouho ? Už stím pracuju poměrně pár let, mám nějaké zkušenosti s PHP, jediný co mě dělá problém je ten JS.
|
||
Chamurappi Profil |
#7 · Zasláno: 3. 3. 2010, 20:07:10 · Upravil/a: Chamurappi
Reaguji na Shotyho:
Co ti brání přesunout řádky 28 až 36 na místo řádku 25? „kdes na tom byl aby se MYSQL QUERY načítal dlouho ?“ Rychlost závisí na zátěži, ne? Webové stránky i databáze jedou také jen na (skoro) normálních počítačích. Čím víc dotazů, tím větší zátěž. Třeba na této diskusi bývaly nepříjemné problémy s rychlostí. |
||
Shoty Profil * |
#8 · Zasláno: 3. 3. 2010, 20:12:26
[#7] Chamurappi
Taky to je možnost. Nevěděl jsem to že to tam jde tak jednoduše strčit. ale i takhle bude čekat než se to vykoná. |
||
Shoty Profil * |
#9 · Zasláno: 3. 3. 2010, 20:14:21
A ktomu MYSQL ti to stejně ten script vykoná za 0.01 sekundy. Celý je to o optimalizaci.
Měl bych ještě dotaz: Ten JS když dá GET na ten soubor tak použije IP adresu localhost ? tedy 127.0.0.1 ? |
||
Joker Profil |
#10 · Zasláno: 3. 3. 2010, 20:23:46 · Upravil/a: Joker
Shoty:
„A kdes na tom byl aby se MYSQL QUERY načítal dlouho?“ Vždyť jsem to psal výše. Připomínám: Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. = Vemte na vědomí, že synchronní požadavky mohou dočasně zablokovat prohlížeč a znemožnit jakoukoli akci dokud je požadavek aktivní 1. Sestaví a odešle se požadavek na server. Už tohle klidně může trvat desítky sekund, nebo se nemusí povést vůbec. Mezitím návštěvníkovi zamrzne prohlížeč. 2. Server musí ten požadavek přijmout a zpracovat. A když server bude přetížený, tak si ten požadavek chvíli počká. A když server bude opravdu přetížený, může ten požadavek jednoduše zahodit. 3. Server se musí připojit k databázi. Ta nemusí fungovat. Pak samozřejmě dřív nebo později nastane timeout... výchozí hodnota v PHP je myslím 60 sekund, čili na minutu zamrzlý prohlížeč. 4. Ten požadavek musí zase ze serveru doputovat ke klientovi. Jasně že normálně takové problémy nenastanou, ale řešit chybové stavy tak, že budu doufat že nenastanou, není moc dobrý nápad. „A ktomu MYSQL ti to stejně ten script vykoná za 0.01 sekundy. Celý je to o optimalizaci.“ Napišete klientovi hlášku: "Tato stránka je optimalizována pro připojení optickým kabelem a nesmí spadnout aplikační ani databázový server, jinak Vám zatuhne prohlížeč"? dodatek: Shoty: „Ten JS když dá GET na ten soubor tak použije IP adresu localhost ? tedy 127.0.0.1 ?“ Použije se ta adresa, kam to odešlete. Čili v tomhle případě adresa na které je ta stránka. |
||
Chamurappi Profil |
#11 · Zasláno: 3. 3. 2010, 20:25:04
Reaguji na Shotyho:
„i takhle bude čekat než se to vykoná“ Zruš async: false a čekat nebude. Tedy skript pojede vesele dál, prohlížeč bude rád, že jsi ho nezakousnul, a někdy později (klidně o těch pár milisekund) uprostřed této šťastné symbiózy přijedou data, která se zpracují přichystanou callback funkcí.
„Ten JS když dá GET na ten soubor tak použije IP adresu localhost ?“ Ne. Požadavek vychází z počítače návštěvníka, takže ho uvidíš s jeho IP adresou. |
||
Shoty Profil * |
#12 · Zasláno: 3. 3. 2010, 20:32:26
1. Sestaví a odešle se požadavek na server. Už tohle klidně může trvat desítky sekund, nebo se nemusí povést vůbec. Mezitím návštěvníkovi zamrzne prohlížeč.
V mém případě zamrzne JavaScript, a co se stane když tu funkci vyvolám 2x ? stará zůstane otevřená ? |
||
Shoty Profil * |
#13 · Zasláno: 3. 3. 2010, 20:43:30
Tak jsem dal na vaše rady a async mám na TRUE.
Pěkně jsme si popovídali. |
||
_es Profil |
#14 · Zasláno: 3. 3. 2010, 20:44:14 · Upravil/a: _es
Shoty:
„V mém případě zamrzne JavaScript“ V niektorých prehliadačoch zamrzne celé ich ovládanie. „co se stane když tu funkci vyvolám 2x ? stará zůstane otevřená ?“ Môže nastať toto: prvé pripojenie sa otvorí, druhé pripojenie sa otvorí, prvé pripojenie sa ukončí, zavolá sa callback funkcia s parametrami prvého spojenia, druhé pripojenie sa ukončí, zavolá sa callback funkcia s parametrami druhého spojenia. |
||
Časová prodleva: 14 let
|
0