Sziasztok!
Van egy program, amelyet phpból indítok, ennek a screen-jére phpból parancsokat küldök. Ez a program egy felvételt készít(lényegtelen, hogy mit). A problémám az, hogy az embereknek meg van az a tulajdonsága, hogy elfelejtik leállítani a felvételt és e miatt több Gb-os fájlok keletkeznek, ami még nem is lenne akkora gond, csak a nem lehet megnézni a felvételt, mert túl nagy a fájl mérete és ezért fagy a progi (nem csak nálam, többen panaszkodtak ugyanis egy átlag fájlméret egy ilyen felvételből 80Mb). Kérdésem az lenne, hogy hogyan tudnám megcsinálni, hogy időkorlátos legyen az egész. Tehát egy user küld a screenre egy parancsot, amit cronból ps parancsal vizsgálok, hogy mióta fut, és ha több mint X órája akkor küldjön a screenre a user nevében egy másikat (ami leállítja a felvételt). Ez mind szép és jó, csak az vele a gond, hogy nem vágom annyira még a linuxot, hogy ezt meg tudjam valósítani. Google-t olvasgattam már, de nem találtam olyat ami körülbelül megfelelne az én problémámra.
Ötleteket várok, hogyan tudnám orvosolni a problémámat.
- 1402 megtekintés
Hozzászólások
Felesleges. Kezd úgy a php-t, hogy megmondod, mennyi a script maximális futási ideje.
http://hu.php.net/function.set-time-limit
- A hozzászóláshoz be kell jelentkezni
valami nem akar összejönni ebben :S az a baj, hogy nem a folyamatot akarom leállítani, hanem a screen-re egy felvétel leállító parancsot küldeni az indítás után X órával.
- A hozzászóláshoz be kell jelentkezni
Elso tippem, hogy olvasd at a - szerintem - legkonnyebben elsajatithato sztringfeldolgozo nyelv, az awk doksijat.
A masodik pedig, ha az elso nem tetszene, ird at a php altal inditott progit, hogy az maga szamolja az eltelt (korulbeluli) idot.
Bashben kb. igy:
MAX_RUN_SEC=5
# erdemi resz, ami valamit csinal
function f1 {
while true ; do
date
sleep 1
done
}
# startolja az erdemi reszt
f1 > f1.out &
# visszaszamol (illetve elore), aztan gyilkol
sleep $MAX_RUN_SEC
kill %1
- A hozzászóláshoz be kell jelentkezni