Хорошо, у меня есть ENDLESS LOOP
, мне нужен этот бесконечный цикл, ничего плохого в этом нет! Когда я запускаю этот скрипт через php script.php
, он работает без проблем, но на втором этапе и так далее ... запускать он уже не работает должным образом. Я добавил в качестве теста вывод $ при втором запуске в БД, чтобы увидеть, что не так, и я получаю эту ошибку a:1:{i:0;s:24:"sh: 0: command not found";}
, она сериализована.
Помните, что скрипт работает при первом запуске, но никогда при втором + запуске, что-то не так с $ output и $ video во втором 3-м + запуске,
Кодировка работает при каждом запуске, файлы переименовываются и перемещаются должным образом
Я пытался сбросить $output
$video
$duration
и $error
в конце скрипта, но затем я получаю сообщение об ошибке, переменные не определены во 2-й + прогон. Есть идеи, что не так?
О коде: я поместил фрагмент не полный код, если опечатки там его единственная ошибка copypaste.
Я думаю, что что-то с exec
неверно, когда они дают вывод переменной во 2-й + прогон
Вот мой сценарий
<?php
while(10) {
// Getting Data From DB
$sql = "SELECT * FROM videos_to_edit WHERE status = 'pending' ORDER BY post_time ASC LIMIT 1";
// Encoding Video;
exec("$mencoder $temp_upload_dir$post_filename -o $temp_upload_dir$r_post_id.mp4 2>&1", $output);
// Checking if Mencoder could encode it
foreach($output as $error) {
if(preg_match('/============ Sorry, this file format is not recognized\/supported =============/', $error)) {
$error1 = "error";
}
}
if(!isset($error1)) {
// Getting duration of Video with mplayer
exec("$mplayer $temp_upload_dir$r_post_id.mp4 2>&1", $video);
// Getting the duration with preg_match
foreach($video as $vidlenght) {
if(preg_match('/ID_LENGTH=/', $vidlenght)) {
$duration = $vidlenght;
$duration = explode("=",$duration);
$duration = $duration['1'];
}
}
// MOVING FILE TO PUBLIC DIR
CODE HERE...
//UPDATING DB
$sql = "UPDATE videos_to_edit SET status = 'finished' WHERE post_id = ?";
}
}
?>