#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
. Но некоторые небольшие тесты показали бы. 🙂