/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Tidsbegrænsning af exec
Fra : Leif Neland


Dato : 11-05-09 21:45

Jeg skal konvertere nogle videoer med ffmpeg, men på nogle filer hænger
ffmpeg.

for (...) {
....
$cmd=sprintf("/usr/bin/ffmpeg -y -i '%s' -ar 22050 -f flv
%s",$infile,$outfile);

exec($cmd) ;
}

Kan man lave et timeout, så de "defekte" videoer bare springes over?

jeg ønsker ikke at benytte php's generelle timeout, så scriptet bare
dør, hvis ffmpeg hænger.

Leif

 
 
Dan Storm (11-05-2009)
Kommentar
Fra : Dan Storm


Dato : 11-05-09 22:25

Leif Neland skrev:
> Kan man lave et timeout, så de "defekte" videoer bare springes over?

Nej, det kan du ikke.
Du må lave noget mere intelligent styring.
Konverteringerne skal blot startes og output skal sendes til en fil
fremfor at vises i PHP.

F.eks.:
exec($cmd . " > /dev/null &");

På den måde startes $cmd og køres i baggrunden.
Med lidt kreativ tankegang kan du lave noget intelligent styring til
overvåge de reelle filer som ffmpeg får konverteret.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Leif Neland (11-05-2009)
Kommentar
Fra : Leif Neland


Dato : 11-05-09 23:10

Dan Storm skrev:
> Leif Neland skrev:
>> Kan man lave et timeout, så de "defekte" videoer bare springes over?
>
> Nej, det kan du ikke.
> Du må lave noget mere intelligent styring.
> Konverteringerne skal blot startes og output skal sendes til en fil
> fremfor at vises i PHP.
>
> F.eks.:
> exec($cmd . " > /dev/null &");
>
> På den måde startes $cmd og køres i baggrunden.
> Med lidt kreativ tankegang kan du lave noget intelligent styring til
> overvåge de reelle filer som ffmpeg får konverteret.
Jo man kan.
Med ulimit -t <cpu_sekunder>

$cmd=sprintf("ulimit -t 60; /usr/bin/ffmpeg -y -i '%s' -ar 22050
-f flv %s",$infile,$outfile);
exec($cmd,&$arr,$ret) ;
if ($ret==0) {$n++;}

Returkoden $ret er 0, hvis det lykkedes, 137 hvis ulimit er overskredet.

Leif

Dan Storm (12-05-2009)
Kommentar
Fra : Dan Storm


Dato : 12-05-09 00:15

Leif Neland skrev:
> Jo man kan.
> Med ulimit -t <cpu_sekunder>

Jeg troede du ledte efter en løsning via PHP. Min fejl...

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Leif Neland (12-05-2009)
Kommentar
Fra : Leif Neland


Dato : 12-05-09 07:04

Dan Storm skrev:
> Leif Neland skrev:
>> Jo man kan.
>> Med ulimit -t <cpu_sekunder>
>
> Jeg troede du ledte efter en løsning via PHP. Min fejl...
>
Nu ikke så mobset

Det er vel lige så meget "via PHP" at exec("ulimit -t 60;/mit/program")
som exec ("/mit/program")

Og via returkoden kan php-programmet så reagere passende på timeout.

Leif


Dan Storm (12-05-2009)
Kommentar
Fra : Dan Storm


Dato : 12-05-09 09:02

Leif Neland skrev:
> Nu ikke så mobset

Jeg er skam ikke mobset :)

> Det er vel lige så meget "via PHP" at exec("ulimit -t 60;/mit/program")
> som exec ("/mit/program")

Det er selvfølgelig et spørgsmål om fortolkning - jeg mener jo det er
CLI der sørger for timeout i dette tilfælde og ikke PHP som sådan.

> Og via returkoden kan php-programmet så reagere passende på timeout.

Naturligvis - effekten er ganske sikkert som ønsket.

I mit tilfælde har jeg en database over de film som skal konverteres via
ffmpeg. Ud fra den eksekverer jeg, via et cronjob, mit ffmpeg script,
som sender outputtet til /dev/null.
Ud fra de oplysninger jeg så har fra databasen, samt de

Jeg selv laver en eksekvering af mine ffmpeg kørsler og sender outputtet
til nogle filer som jeg så læser og parser. På den måde har jeg fuld
kontrol over hvilke filer der er fejlet, igang eller færdige.

Og med lidt AJAX, så han man en lækker lille applikation der live
opdaterer hvor langt den enkelte film er med sin konvertering. :)


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Dan Storm (12-05-2009)
Kommentar
Fra : Dan Storm


Dato : 12-05-09 09:15

Dan Storm skrev:
> I mit tilfælde har jeg en database over de film som skal konverteres via
> ffmpeg. Ud fra den eksekverer jeg, via et cronjob, mit ffmpeg script,
> som sender outputtet til /dev/null.
> Ud fra de oplysninger jeg så har fra databasen, samt de

En ufærdig sætning... godmorgen til mig... :p

Jeg sender somregel ikke outputtet til /dev/null, men til en fil jeg kan
læse og parse indholdet af, som jeg kom ind på senere i mit indlæg. Jeg
kan så ud fra de oplysninger jeg har fra databasen, samt de filer jeg
har oprettet i mit cronjob, holde dataene op mod hinanden og så overvåge
konverteringerne og deres fremskridt.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Leif Neland (12-05-2009)
Kommentar
Fra : Leif Neland


Dato : 12-05-09 09:24

Dan Storm skrev:
> Dan Storm skrev:
>> I mit tilfælde har jeg en database over de film som skal konverteres
>> via ffmpeg. Ud fra den eksekverer jeg, via et cronjob, mit ffmpeg
>> script, som sender outputtet til /dev/null.
>> Ud fra de oplysninger jeg så har fra databasen, samt de
>
> En ufærdig sætning... godmorgen til mig... :p
>
> Jeg sender somregel ikke outputtet til /dev/null, men til en fil jeg kan
> læse og parse indholdet af, som jeg kom ind på senere i mit indlæg. Jeg
> kan så ud fra de oplysninger jeg har fra databasen, samt de filer jeg
> har oprettet i mit cronjob, holde dataene op mod hinanden og så overvåge
> konverteringerne og deres fremskridt.
>
>
Har du så nogen erfaring i at hvorfor visse film får ffmpeg til at hænge?

Leif

Dan Storm (12-05-2009)
Kommentar
Fra : Dan Storm


Dato : 12-05-09 09:44

Leif Neland skrev:
> Har du så nogen erfaring i at hvorfor visse film får ffmpeg til at hænge?
>

Ikke andet end at ved konvertering af nogle divx film, virker det som om
ffmpeg indimellem vælger at standse og så fryse, men efter et minuts tid
så genoptages konverteringen. en google søgning for lang tid siden
gjorde mig ikke meget klogere - en teori var at det skyldes 'hård
komprimering' men det er ikke noget jeg kan bekræfte da jeg intet ved om
det. Så jeg har valgt at se igennem fingre med det.

Jeg har dog lavet en slags 'timeout' script der dræber den process der
halter, hvis den står stille i mere end to minutter og starter den
derefter igen. Lykkedes det ikke anden gang, registreres filmen som fejlet.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Leif Neland (12-05-2009)
Kommentar
Fra : Leif Neland


Dato : 12-05-09 12:41

Dan Storm skrev:
> Leif Neland skrev:
>> Har du så nogen erfaring i at hvorfor visse film får ffmpeg til at hænge?
>>
>
> Ikke andet end at ved konvertering af nogle divx film, virker det som om
> ffmpeg indimellem vælger at standse og så fryse, men efter et minuts tid
> så genoptages konverteringen. en google søgning for lang tid siden
> gjorde mig ikke meget klogere - en teori var at det skyldes 'hård
> komprimering' men det er ikke noget jeg kan bekræfte da jeg intet ved om
> det. Så jeg har valgt at se igennem fingre med det.
>
> Jeg har dog lavet en slags 'timeout' script der dræber den process der
> halter, hvis den står stille i mere end to minutter og starter den
> derefter igen. Lykkedes det ikke anden gang, registreres filmen som fejlet.
>
Hmm. Så vil jeg prøve at sætte timeout til to minutter...

Leif


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste