Использование ffmpeg, PHP и beanstalk - PullRequest
2 голосов
/ 08 апреля 2011

Я очень новичок в ffmpeg и beanstalk, и мне нужна небольшая помощь.Я хочу использовать beanstalk для очереди файлов для ffmpeg для преобразования.Я скачал, установил и запустил beanstalkd (также установил libevent, как он предлагает), и я скачал PHP-клиент для beanstalkd;

http://sourceforge.net/projects/beanstalk/

Теперь после загрузки клиента ипоставив его на свой сервер, я ничего не сделал, но использовал пример с клиента, и я получаю эту ошибку;

Неустранимая ошибка : максимальное время выполнения 30 секунд превышено в / Users/wasimkhamlichi/Sites/vibenation/beanstalk/src/BeanStalk.class.php в строке 1138

Это код из примера;

$beanstalk = BeanStalk::open(array(
    'servers'       => array( '127.0.0.1:11300' ),
    'select'        => 'random peek'
));

// As in the protocol doc.
$beanstalk->use_tube('foo');

// As in the protocol doc.
$beanstalk->put(0, 0, 120, 'say hello world');      // Add a job to the queue with highest priority, 
                                                    // no delay, 120 seconds TTR, with the contents
                                                    // 'say hello world'.

                                                    // NOTE: the put() method here supports a final optional 
                                                    // argument, a tube name. If supplied, the server will
                                                    // first switch to that tube, write the job, then switch
                                                    // back to the old tube again.

// As in the protocol doc.
$job = $beanstalk->reserve();                       // Assuming there was nothing in the queue before 
                                                    // we started, this will give us our 'hello world'
                                                    // job back.

// This is a BeanQueueJob object.
echo $job->get();                                   // Output: 'say hello world'

Beanstalk::delete($job);                            // Delete the job.

Очень простой быстрый скрипт, чтобы сказать приветно время истекло.Может кто-нибудь помочь, пожалуйста?

1 Ответ

2 голосов
/ 13 апреля 2011

Beanstalk просто передает сообщения.Вы помещаете что-то в очередь в одном месте, а позже - в другое.

Вы можете поместить имя файла в трубу с именем 'ffmpeg-convert'.PHP-скрипт, запускаемый из командной строки, резервирует следующий элемент из очереди и делает то, что ему нужно, помещая готовый файл в подходящее место.

Если вам нужна дополнительная информация (например, куда поместитьготовый файл, настройки качества или новое имя выходного файла), вы можете закодировать информацию - массив информации, преобразованный в строку Json (с json_encode($array)), является хорошим выбором.Вы помещаете закодированную строку в Beanstalk, и сценарий cli декодирует строку и выполняет всю работу.

Запуск работника в виде сценария на основе командной строки обычно позволяет избежать проблем с тайм-аутом.В отличие от запроса веб-страницы, время ожидания по умолчанию не предусмотрено, а также больше возможностей использования памяти.

...