Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Вопрос по выполнению своей функции в PHP
цитата
04/06/12 в 17:48
 Yabuti
Всем привет!
Подскажите пожалуйста, кто знает, как можно сделать так, чтобы функция, которая требует время на свое выполнение (склейка песен, ffmpeg), нормально обрабатывалась в цикле, который дает ей поочередно много исходных данных?

Т.е., есть такое:

function super($text) {
_тут_склейка_песен_
(занимает 2-3 минуты на обработку)
return "OK";
}

for ($i=0;$i<count($array);$i++) {
super(array[$i]);
}

--------------
Делаю так, как выше - т.е. функция склейки, а вызываю ее для каждой строки (имена файлов для склейки) в цикле.
Но проблема в том, что она поработает первый цикл и затем тупит, завершается.

Подскажите пожалуйста, как сделать так, чтобы цикл ждал, пока функция выполнится на 100%, затем только делал следующую итерацию?

Не знаю, как искать в гугле такое, мучаюсь с завершением цикла, не выполнившегося так, как нужно.

Заранее огромное спасибо! smail54.gif
цитата
04/06/12 в 18:54
 shar
ffmpeg запускаешь через shell_exec? если в конце команды есть что-то типа "> /dev/null 2>&1 &" то ждать завершения не будет
цитата
04/06/12 в 19:23
 AWD
читаю твои мысли... теперь код... нету в начале пых-файла set_time_limit(0); ?
уж очень мало информации, а у меня трава закончилась. в астрал без нее ну никак... smail101.gif

и забудь за Код:
for ($i=0;$i<count($array);$i++) {
super(array[$i]);
}
делай Код:
foreach($array as $val)
  super($val);
цитата
04/06/12 в 20:06
 Yabuti
AWD: огромное, огромное спасибо! Получилось! smail04.gif smail76.gif
Сорри, забыл написать, что тайм-лимит и лимит памяти задал:
Код:
set_time_limit (90000);
ini_set('memory_limit', '512M');
ini_set('max_input_time', '9000');


Создаются все, в порядке очереди. Я так рад, что не придется кнопку на каждый трек жать, ура! icon_cool.gif smail54.gif

shar: да, через exec вызываю, но dev null нет, т.к. винда.

smail04.gif


Эта страница в полной версии