Stránka 1 z 1

php - ukončení funkce...

Napsal: úte 21. kvě 2013, 14:44
od Václav Sedlář
Ahoj, v PHP mám cyklus, který v každém průchodu předá metodě číslo,v té metodě se číslo vloží do html parametru get a poté pomocí php html parseru odkaz odešlu a výsledek pomocí párseru stáhnu...

Vše funguje, ale mám jeden problém - někdy je cílová adresa (server) přetížen a nedá žádný výsledek (nebo za hodně dlouho)...Myslel jsem, že to vyřeší nastavený max. čas (v php.ini), který script ukončí, ale ne - místo toho se jakoby nic neděje (prohlížeč ukazuje načítání stránky) a php se sekne (musím restatovat localhost)...

Lze nějak udělat, že když do xxx sekund nedostanu výsledek, aby se metoda ukončila a mohl jsem vypsat třeba "služba je momentálně nedostupná"?

Názorný příklad:

Předání parametru funkci a na konci zobrazení výsledku:

Kód: Vybrat vše

//pomocí formu odešlu čísla do php kde uložím do pole:
.......
$pole=array();//toto pole obsahuje už ty čísla 

//pak spustím foreach kde předám číslo metodě:
$vysledek="";
foreach ($pole as $cislo) {
 $vysledek.=moje_funkce($cislo);
}
...
echo $vysledek;
Samotná funkce (je v jiném php souboru, který se pomocí require_once vkládá do toho prvního:

Kód: Vybrat vše

function moje_funkce($cislo){
 $url="http://www.xxx.cz?cislo=$cislo"
//html parser:
 $html = @file_get_html($url);//tu se to sekne - parser čeká na odpověď přetíženého serveru...
 $vysledek=......//různé zpracování výsledku//sem už se nedostanu
//return $vysledek;
}

Re: php - ukončení funkce...

Napsal: stř 22. kvě 2013, 13:02
od senik88
Minimálně bych to parsování v moje_funkce() obalil do try/catch bloku kvůli lepšímu odchytávání výjimek. Tím by se snad i mělo vyřešit ukončování skriptu nastaveným max časem. Lepší řešení mě momentálně nenapadá.

Re: php - ukončení funkce...

Napsal: stř 22. kvě 2013, 14:11
od Václav Sedlář
ok, zkusím a dám vědět...