Autor Zpráva
Micha 1966
Profil *
Zdravim, potreboval by som pridat do cronu spustanie php scriptu ale tak, ze mi ho cron spracuje kazdu minutu, ale pokial je cron spusteny, ze za poslednu minutu nespracoval este tento script, tak druhy krat ho uz nespusti. Mam plny pristup k serveru, vedel by niekto helfnut ako na to?
Alphard
Profil
To bude myslím lepší řešit na úrovni toho PHP scriptu, než z vnějšího prostředí. Script by se sice spustil znovu, ale vzápětí by se po krátké kontrole sám ukončil. K implementaci použijte souborové zámky, to je už vymyšlené.

Pokud nechcete tento mechanismus implementovat do přímo do vašeho scriptu, může existovat jako vnější kontejner, který spouští libovolný script a čeká na jeho dokončení (popř. i spadnutí) s uvolněním zámku. Tenhle script pak může být napsaný v libovolném jazyce a fungovat univerzálně.

A na to už existují nějaká hotová řešení, např. http://www.kfirlavi.com/blog/2012/11/06/elegant-locking-of-bash-program/.
Keeehi
Profil
Micha 1966:
Jako že pokud ten původní script běží déle než 60 vteřin, tak ten druhý nespouštět?


<?php
$fp = fopen("lockfile", "r+");
if (!flock($fp, LOCK_EX)) {
    exit;
}
    
/* critical code */

flock($fp, LOCK_UN);
fclose($fp);
Teoreticky tam ty 2 poslední řádky být nemusí ale je hezké je tam mít.

Takto se script sice podruhé spustí, ale hned na začátku zjistí, zda předchozí ještě běží a pokud ano, tak se ukončí.
Micha 1966
Profil *
Dakujem, vyskusam

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: