Запуск из php кодирования mp3 в бекраунде без задержки выполнения кода

qru

Новичок
Добрый день

Есть самописный php код - юзер загружает mp3 файлы на сайт (сразу по несколько файлов - код выполняется в цикле - флеш загрузчик).
Нужно сейчас добавить возможность перекодирования сразу в ogg (чтобы через html5 проигрывать во всех браузерах).

Использую для этого код типа

$shell = 'dir2ogg -d /путь к директории/ --mp3-decoder=lame';
$output = shell_exec($shell);

Но понятно что если вызывать эту конвертацию после загрузки файла, то юзеру придется ждать пока
она выполнится, и следующий файл до этого момента не будет загружаться.

Как поступить?
В теории можно через крон, конечно, но тогда файлы будут проигрываться не сразу. Хотелось бы чтобы пока юзер загружает остальные файлы уже загруженные бы кодировались.

Можно конечно запустить процесс после загрузки всех файлов, но это событие сложно отследить. Да и опять же хотелось бы чтобы кодирование началось в бекграунде когда уже хотя бы один файл загружен.

Может можно как-то отдельным процессом shell команду в php запустить, чтобы выполнение кода она не задеживала?

Спасибо.
 

Absinthe

жожо
В идеале запускаешь вечноработающую программу, которая while(true) { обработать(взять новые данные из базы); }, в init.d прописываешь даже ее запуск.
Чтобы не тормозил вечный цикл, используешь либо sleep(5), либо сообщения(более умный вариант).
 

qru

Новичок
Про "очередь" сейчас поищу. Спасибо, fixxxer (не знал по какому запросу искать).
В идеале запускаешь вечноработающую программу, которая while(true) { обработать(взять новые данные из базы); }, в init.d прописываешь даже ее запуск.
Чтобы не тормозил вечный цикл, используешь либо sleep(5000), либо сообщения(более умный вариант).
Спасибо за решение. Не слишком от вызова по крону раз в минуту отличается правда. Т.е. передать как-то серверу что нужно выполнить такой-то скрипт (но не ждать его исполнения) никак не получится?
 
Сверху