« 1 2
Autor Zpráva
Joker
Profil
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
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 *
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 *
[#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
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 *
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
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 *
[#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 *
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
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
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 *
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 *
Tak jsem dal na vaše rady a async mám na TRUE.

Pěkně jsme si popovídali.
_es
Profil
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.
« 1 2

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0