Autor Zpráva
Marcus Flintus
Profil
Zdravím,

mám skript, ve kterém mi nějakým způsobem cyklus optimalizuje určitá data. Čím víckrát cyklus proběhne, tím lépe pro mě, ale nesmím přetáhnout čas určený serverem pro provádění daného skriptu. Mohu nějakým způsobem nastavit, aby se cyklus zastavil třeba po 20 vteřinách? Tedy aby cyklus (while) vyskočil ve chvíli kdy doba provádění skriptu přesáhne 20 vteřin?

Díky,
MF
ShiraNai7
Profil
Můžeš uložit na začátku skriptu čas pravidelně ho kontrolovat. To ale nebude 100% přesné, protože čas, který skript skutečně běží není 1:1 vůči "skutečnému" času. Možná by se dala využít funkce getrusage() (ale není dostupná ve Windows).
user243
Profil
asi to není zrovna elegantní, ale...
$konec_scriptu = date("Ymdhis", strtotime("+20 seconds"));

while (date("Ymdhis") < $konec_scriptu)  {
      // nějaká činnost
      }
nevím, jak dlouho by Vám trval jeden cyklus, takže by bylo možná potřeba zkrátit čas o sekundu/dvě; já jsem třeba od nuly přičítal jedničku, pokaždé mi vyšlo jiné číslo, ale těch 20 vteřin to pracovalo;
ShiraNai7
Profil
user243:
Proč s funkcí date? Zbytečně složité (teda hlavně pomalé).

$konec = time() + 20;
while(time() < $konec) {
    // ...
}
user243
Profil
jsem psal, že to není asi elegantní, díky za typ;
Marcus Flintus
Profil
Díky :)

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: