Autor Zpráva
had12
Profil *
ahoj,
už nad tím sedím pár dní a potřeboval bych radu od vás. Mám na serveru tento script:
<?php
    ///// přiřazení člena ke družstvu
    $druzstva = dibi::query('SELECT * FROM :prefix:druzstva ORDER BY nazev, id DESC');
    $clenstvi_dr = dibi::query('SELECT
    :prefix:druzstva.nazev AS druzstvo,
    :prefix:clenove_druzstva.od AS od,
    :prefix:clenove_druzstva.do AS do,
    :prefix:clenove_druzstva.id_druzstvo AS id_druzstvo, 
    :prefix:clenove_druzstva.id AS cldrid
    FROM :prefix:druzstva, :prefix:clenove_druzstva
    WHERE :prefix:clenove_druzstva.id_druzstvo = :prefix:druzstva.id 
    AND :prefix:clenove_druzstva.id_clen = %i', $ex[0], '
    ORDER BY do DESC, od DESC, druzstvo, :prefix:clenove_druzstva.id DESC');
    
    $__vystup .= "<form action=\"".$_root."/akce/akce-administrace-clenove-editace.php\" method=\"post\">\n";
    $__vystup .= "<table>\n<thead>\n";
    $__vystup .= "<tr>\n<th></th>\n<th>Družstvo</th>\n<th>Od</th>\n<th>Do</th>\n</tr>\n";
    $__vystup .= "</thead>\n<tbody>\n";
    
      // stávající členství
      while($clenstvi = $clenstvi_dr->fetch()){
      $__vystup .= "<tr>\n";
      $__vystup .= "<td><input type=\"radio\" name=\"druzstvo\" value=\"".$clenstvi['cldrid']."\" id=\"".$clenstvi['cldrid']."clenstvi\" /></td>\n";      
      $__vystup .= "<td><label for=\"".$clenstvi['cldrid']."clenstvi\">".$clenstvi['druzstvo']."</label></td>\n";
      $__vystup .= "<td>".datum_select($clenstvi['cldrid']."_od", $clenstvi['od'])."</td>\n";
      $__vystup .= "<td>".datum_select($clenstvi['cldrid']."_do", $clenstvi['do'])."</td>\n";     
      $__vystup .= "</tr>\n";
      }    
    
    // nové
    $__vystup .= "<tr>\n";
    $__vystup .= "<td><input type=\"radio\" name=\"druzstvo\" id=\"druzstvo_novy\" value=\"novy\" /></td>\n";
    $__vystup .= "<td><label for=\"druzstvo_novy\">Nové <select name=\"druzstvo_select\">\n";
      
      while($d = $druzstva->fetch()){
      $__vystup .= "<option value=\"".$d['id']."\">".$d['nazev']."</option>\n";      
      }
    
    $__vystup .= "</td>\n";
    $__vystup .= "<td>".datum_select("novy_od")."</td>\n";
    $__vystup .= "<td>".datum_select("novy_do")."</td>\n";
    $__vystup .= "</tr>\n";
    
    $druzstva_text = "Opravdu chcete smazat toto členství ve družstvu?";    
    $__vystup .= "<tr>\n";
    $__vystup .= "<td></td>\n<td colspan=\"3\">";
    $__vystup .= "<input type=\"hidden\" name=\"id_clen\" value=\"".$ex[0]."\" />\n";
    $__vystup .= "<input type=\"submit\" name=\"druzstva_ulozit\" value=\"Uložit změny\" />\n ";
    $__vystup .= "<input type=\"submit\" name=\"druzstva_smazat\" value=\"Smazat členství\" ".confirm($druzstva_text)." />\n ";
    $__vystup .= "<input type=\"submit\" name=\"druzstva_novy\" value=\"Vytvořit nové členství\" /></td>\n";
    $__vystup .= "</tr>\n";
    
    $__vystup .= "</tbody>\n</table>\n";
    $__vystup .= "</form><br /><br />\n\n";
    
    
	
        
    $funkce = dibi::query('SELECT *, :prefix:clenove_funkce.id AS clfuid FROM :prefix:clenove_funkce, 
    :prefix:funkce WHERE id_clen = %i', $ex[0], 
    'AND id_funkce = :prefix:funkce.id ORDER BY do DESC, :prefix:clenove_funkce.id DESC');

    ///// editace funkcí člena
    $__vystup .= "<form action=\"".$_root."/akce/akce-administrace-clenove-editace.php\" method=\"post\">\n";
    $__vystup .= "<table>\n<thead>\n";
    $__vystup .= "<tr>\n<td></td>\n<th>Funkce</th>\n<th>Od</th>\n<th>Do</th>\n<th>Poznámka</th>\n</tr>\n";
    $__vystup .= "</thead>\n<tbody>\n";
    
      while($f = $funkce->fetch()){
      $__vystup .= "<tr>\n";
      $__vystup .= "<td><input type=\"radio\" name=\"funkce\" value=\"".$f['clfuid']."\" id=\"fun".$f['clfuid']."\" /></td>\n";
      $__vystup .= "<td><label for=\"fun".$f['clfuid']."\">".$f['nazev']."</label></td>\n";
          
      $__vystup .= "<td>".datum_select($f['clfuid']."_od", $f['od'])."</td>\n";     
      $__vystup .= "<td>".datum_select($f['clfuid']."_do", $f['do'])."</td>\n";    
      $__vystup .= "<td><input type=\"text\" name=\"".$f['clfuid']."_poznamka\" value=\"".$f['poznamka']."\" /></td>\n";
      $__vystup .= "</tr>\n";
      }    
       
    // nová funkce
    // vybereme seznam všech dostupných funkcí
    $fun = dibi::query('SELECT * FROM :prefix:funkce ORDER BY nazev, id DESC');
    
    $__vystup .= "<tr>\n";
    $__vystup .= "<td><input type=\"radio\" name=\"funkce\" value=\"novy\" id=\"novy\" /></td>\n";
    $__vystup .= "<td><label for=\"novy\">Nový</label> <select name=\"novy_funkce\" style=\"width: 100px;\">\n";
    
      while($fce = $fun->fetch()){
      $__vystup .= "<option value=\"".$fce['id']."\">".$fce['nazev']."</option>\n";
      }

    $__vystup .= "</select></td>\n";
    $__vystup .= "<td>".datum_select("novy_od")."&nbsp;&nbsp;</td>\n";
    $__vystup .= "<td>".datum_select("novy_do")."&nbsp;&nbsp;</td>\n";  
    $__vystup .= "<td><input type=\"text\" name=\"novy_poznamka\" /></td>\n";
    $__vystup .= "</tr>\n";
    $__vystup .= "<tr>\n";
    $__vystup .= "<td><input type=\"hidden\" name=\"id_clen_funkce\" value=\"".$ex[0]."\" /></td>\n";
    $__vystup .= "<td colspan=\"4\"><input type=\"submit\" name=\"funkce-ulozit\" value=\"Uložit změny\" />\n";
    $__vystup .= "<input type=\"submit\" name=\"funkce-smazat\" value=\"Smazat funkci\" />\n";
    $__vystup .= "<input type=\"submit\" name=\"funkce-novy\" value=\"Vytvořit novou\" /></td>\n";
    $__vystup .= "</tr>\n";    
    $__vystup .= "</tbody>\n";
    $__vystup .= "</form>\n";
    ?>


který by měl vystoupit na monitor. problém je v tom, že mi házel chybu max execution time 30, tak jsem si to nechal zvýšit na 300 (to je maximum, víc ani vypnutí mi na hostingu neudělají).
pokud jsem zavolal na ř. 58 echo $__vystup a exit; tak se vypsalo vše bez problémů.

od doby, kdy mi na hostingu nastavili time 300, tak mi to vrací 504 - Gateway Time out...
nevíte někdo, prosím, proč mi to stále provokuje execution time (nebo proč se vrací ta 504?) hádám, že oba errory budou spolu souviset, ale nikde nevidím nic zacykleného, mysql je optimalizovaná (myisam), hosting C4.

předem díky za pomoc.
Davex
Profil
had12:
od doby, kdy mi na hostingu nastavili time 300, tak mi to vrací 504 - Gateway Time out…
Někde mezi webovým prohlížečem a webovým serverem se nalézá proxy server, který zobrazí chybu 504, když webový server neodešle stránku dostatečně včas.

Řešením je nalézt problematické místo ve skriptu, které způsobuje dlouhou dobu běhu. Pokud není problém v první polovině skriptu, tak bude někde v druhé půlce. Odhaduji, že v některém SQL dotazu.

Pokud se shodneme na tom, že to není problém v konfiguraci serveru, tak bych toto téma rád přesunul do vhodnější kategorie PHP nebo Databáze na webu (prosím o bližší upřesnění místa, které způsobuje zdržení).
Moderátor Davex: Přesunuto do PHP.
had12
Profil *
jo...klidně přesuň téma.
nevím proč, ale script se sám od sebe rozběhl... fakt tomu nerozumím, zkoušel jsem to různě breakovat, exitovat, echovat a když jsem to vrátil do původního stavu, tak ejhle...funguje... tak nevím, každopádně dík za pomoc a případně se zase ozvu, kdyby se tomu zachtělo přestat fungovat... :-D
dík
had12
Profil *
tak skript opět přestal pracovat. :-( vyhodilo mi to error gateway time out, opět... a přitom už několikrát rychle naběhl a fungoval tak, jak má... tak nevím, jestli je to zátěží hostingového serveru třeba...? nebo čím by to ještě mohlo být???
jinak při mém testování všechny sql dotazy byly provedeny bez problémů (ruční spuštění), naběhly taky rychle... napadlo mě ještě, jestli ten problém nemůže způsobovat vrstva dibi... ale to nevím, je to přece ozkoušenej nástroj...
had12
Profil *
každej cyklus se neprovede víckrát jak 5x...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0