2017-11-29 11 views
2

Ich habe einen cron-Job hinzugefügt ein Skript nach jeweils 10 Minuten auszuführen, wird das Skript überprüft, ob die jede neue Datei in dem Verzeichnis hochgeladen, wenn es eine neue Datei ist dann wandelt es die Videodatei auf eine kleine Größe, wie ich in dem Befehl gegeben haben ..Dateikonvertierung jeder nach 10 Minuten cronjob

Unten ist der Code, den ich versucht habe, funktioniert alles, habe ich versucht, auch die E-Mail-Funktionalität hinzufügen und es funktioniert, aber ffmpeg Befehl nicht

$last = (int)file_get_contents('timestamp.txt'); 
file_put_contents('timestamp.txt', time()); 
$files = glob('videos/*.mp4'); 
$files = array_filter($files, function($file) { 
    return filemtime($file) > $last; 
}); 

if ($files) { 
    foreach ($files as $sfile) { 
     $sfile = str_replace('videos/', '', $sfile); 
     $video = 'videos/'.escapeshellcmd($sfile); 
     $sixty = "videos/250/".escapeshellcmd($sfile); 
     $cmdform = "ffmpeg -i $video -vf scale=250:140 $sixty"; 
     $do = `$cmdform`; 
    } 
} 
Ausführung

Eine weitere Sache ist, dass es die Dateien mit statischen Namen konvertiert, wenn ich "Videos/1.mp4" gebe, dann funktioniert es, funktioniert aber nicht in foreach-Schleife.

und Befehl cron-Job

*/10 * * * * wget http://mywebsite.com/coding.php 

Vielen Dank zu setzen.

+0

Tun Sie einige 'Echo' in der 'foreach'-Schleife zu überprüfen, ist es iteriert, drucken Sie auch $ do, um zu überprüfen, was die Antwort ist. –

+0

Es druckt nichts, danke. Aber was ist die Lösung? – raman

+0

statt 'echo' versuchen' error_log', & überprüfen Sie das Fehlerprotokoll. Ich denke, in der ersten Iteration ist etwas schiefgelaufen, was die Iteration stoppt. Zuerst muss man das Problem finden und dann an die Lösung denken. –

Antwort

0

, wenn Sie externen Befehl ausgeführt werden soll, kann u Verwendung von PHP brüllen cmd

exec('cmd') 

Eg machen:

<?php  
echo exec('whoami'); 
?> 

Ausgang: Ihr Computername

In Ihrem Fall es wird

sein
... 
... 
... 
$cmdform = "ffmpeg -i $video -vf scale=250:140 $sixty"; 
$do = exec($cmdform); 

Ich hoffe, das ist nützlich

+0

Ich habe versucht, aber nicht arbeiten. – raman

+0

jeder Fehler hast du? Welches Betriebssystem versuchst du? –

+0

Linux und kein Fehler in der Datei. – raman

Verwandte Themen