Как настроить процесс так, чтобы он выполнялся после другого процесса?

#php #mysql #linux

#php #mysql #linux

Вопрос:

У меня есть скрипт для загрузки видео на php, и в конце он запускает скрипт ffmpeg для преобразования загруженного файла. Затем он вставляет видеоинформацию в базу данных mysql и в поле status значение 0, поскольку файл обрабатывается.

Я подумал, что вместе с командой Linux ffmpeg я мог бы запустить отложенный процесс, который выполняет файл php, чтобы после преобразования файла и завершения процесса ffmpeg он выполнял файл php, и этот файл имел инструкцию update и мог обновить запись видео в базе данных mysql со статусом до 1. Однако для этого мне нужно каким-то образом передать идентификатор видео в терминал, чтобы он мог передать его в файл php…Кто-нибудь знает, как это сделать?

 $sql = 'INSERT INTO video (id, uploader, video_id, status) VALUES(?,?,?,?)';
$stmt3 =$conn->prepare($sql);
$result=$stmt3->execute(array($id,$username,$video_id,0));

$command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.' -acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0 /home/g/Desktop/'.$id2.'.flv');
  

Ответ №1:

Попробуйте это:

 $command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.'' .
    '-acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0' .
    '/home/g/Desktop/'.$id2.'.flv amp;amp; /usr/bin/php /home/g/bin/update_db.php ' . $id2);
  

В нем говорится выполнить, '/usr/bin/php /home/g/bin/update_db.php ' . $id2 если ffmpeg(1) команда выполнена успешно. (Это может привести к сбою.)

Чтобы попробовать это в командной строке: true amp;amp; echo hi и false amp;amp; echo hi .

Комментарии:

1. итак, тогда $ id2 публикуется или добраться до update_db.php ? как вы называете это в файле?

2. @Scarface, вероятно, это было бы $argv[1] или $argv[2] . (Я не знаю, $argv[0] будет ли это интерпретатор PHP /usr/bin/php или $argv[0] будет ли это PHP-скрипт /home/g/bin/update_db.php . Но некоторые небольшие тесты показали бы. 🙂