Üdv!
Egy videónézegető modult készítek, és ahhoz feltöltőt. A feltöltőnek szerver oldalon át kellene alakítani a videót flv formátumra. A gond ott van, hogy ez akár percekig is eltarthat, addig meg csak ne fusson már a php szkript. Valami olyasmi megoldás kellene, hogy a php indítson el egy shell szkriptet a megfelelő paraméterekkel, majd folytassa tovább a futását, és ne várja meg, amíg befejeződik. A shell szkript viszont fejeződjön be akkor is, ha a php szkript már nem fut. Megoldható? Vagy valamilyen kerülőt kell alkalmazni?
- 1577 megtekintés
Hozzászólások
nem egyszerubb egy cronjob, ami pl sql-bol veszi a kodolandokat, es ha kesz, a statuszt atbillenti "kesz"-re?
t
- A hozzászóláshoz be kell jelentkezni
Nem túl elegáns megoldás, egy shell script is folyamatosan fut, de működik: mkfifo-val létrehozol egy pipe-ot, amit egy külső scripttel olvasol:
while true; do
fajlinfo="`head pipefajl -n 1`";
{
átalakítás
}&
done;
Fontos, hogy gyorsan visszaérjen a head részhez, ezért van az & jel. Valószínűleg van valami elegánsabb megoldás is, de a php-hez nem értek.
- A hozzászóláshoz be kell jelentkezni
szerintem is járató út ez, de ciklus nem kell hozzá. system("ffmpeg opciok mit mire &"); persze ez csak *nix rendszereken működik.
- A hozzászóláshoz be kell jelentkezni
szóval, ha azt írom, hogy:
system("./kodolas.sh fajlnev.wmv &");
akkor az azt a hatást éri el, amit én akartam?
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
esetleg exec() vagy fork()
--
"Tedd vagy ne tedd, de ne probáld"
- A hozzászóláshoz be kell jelentkezni
találtam egy megoldást, elvileg ennek mennie kell:
exec("nohup *command* 1>/dev/null/ 2>&1 &");
---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!
- A hozzászóláshoz be kell jelentkezni
Lehet, bár nem ez a jó megoldás, hiszen szeretnél visszajelzést kapni a konvertálás sikerességéről...
- A hozzászóláshoz be kell jelentkezni
Erre sajnos a megoldás az, hogy kell egy daemont írni. Szerencsédre a pcntl libraryvel akár külön szálakat is indíthatsz PHP-ből, tehát egy számodra ismert nyelven megírhatod az egészet. Ha pl ffmpeg-et használsz, akkor azt meglökheted a megfelelő PHP libraryvel.
Érdemes arra figyelni, hogy az ffmpeg a procit akár jópár másodpercig max terhelésen tudja tartani, tehát érdemes előre skálázásban gondolkodni.
Az egész feladatnak pedig egy sorbanállást kell megvalósítani. A realtime feltöltés gyakorlatilag lehetetlen, tehát a felhasználói felületen erről visszajelzést kell adj.
- A hozzászóláshoz be kell jelentkezni