Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
1

Разбить скрипт на 2 части и выполнить по очереди

26.10.2014, 18:54. Показов 2452. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как разбить скрипт на части и выполнить их по очереди, т.е. первая часть закончила работу, вторая начинает. Так как в таком варианте вторая часть скрипта начинает работать до окончания всех задач shell_exec.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
    $dir = 'oper_'.$random;
mkdir($dir);
//new file names
$p360 = $dir.'/'.$random.'.360.mp4';
$p480 = $dir.'/'.$random.'.480.mp4';
$p720 = $dir.'/'.$random.'.720.mp4';
$p1080 = $dir.'/'.$random.'.1080.mp4';
//resolution
$s360 = '640x360';
$s480 = '854x480';
$s720 = '1280x720';
$s1080 = '1920x1080';
//video birate
$b360 = '400k';
$b480 = '700k';
$b720 = '900k';
$b1080 = '1200k';
//audio bitrate
$a360 = '128k';
$a480 = '128k';
$a720 = '384k';
$a1080 = '384k';
 
$vid360 = 'ffmpeg -i '.$file.' -s '.$s360.' -vcodec h264 -threads 0 -r 25 -g 50 -b '.$b360.' -bt 500k -acodec mp3 -ar 44100 -ab '.$a360.' '.$p360.'';
 
$vid480 = 'ffmpeg -i '.$file.' -s '.$s480.' -vcodec h264 -threads 0 -r 25 -g 50 -b '.$b480.' -bt 500k -acodec mp3 -ar 44100 -ab '.$a480.' '.$p480.'';
 
$vid720 = 'ffmpeg -i '.$file.' -s '.$s720.' -vcodec h264 -threads 0 -r 25 -g 50 -b '.$b720.' -bt 500k -acodec mp3 -ar 44100 -ab '.$a720.' '.$p720.'';
 
$vid1080 = 'ffmpeg -i '.$file.' -s '.$s1080.' -vcodec h264 -threads 0 -r 25 -g 50 -b '.$b1080.' -bt 500k -acodec mp3 -ar 44100 -ab '.$a1080.' '.$p1080.'';
 
$movie = new ffmpeg_movie($file);
if($movie->getFrameWidth() < 640 && $movie->getFrameHeight() < 360){
    
    #360
    shell_exec($vid360);
    
    
}elseif($movie->getFrameWidth() >= 640 && $movie->getFrameHeight() >= 360 && $movie->getFrameWidth() <= 640 && $movie->getFrameHeight() < 480){
    
    #360
    shell_exec($vid360);
    
    
}elseif($movie->getFrameWidth() <= 640 && $movie->getFrameHeight() == 480 && $movie->getFrameWidth() <= 1280 && $movie->getFrameHeight() < 720){
    
    #360
    shell_exec($vid360);
    #480
    shell_exec($vid480);
    
    
}elseif($movie->getFrameWidth() >= 1280 && $movie->getFrameHeight() == 720 && $movie->getFrameWidth() <= 1920 && $movie->getFrameHeight() < 1080){
    
    #360
    shell_exec($vid360);
    #480
    shell_exec($vid480);
    #720
    shell_exec($vid720);    
    
}elseif($movie->getFrameWidth() >= 1280 && $movie->getFrameHeight() >= 720){
 
    #360
    shell_exec($vid360);
    #480
    shell_exec($vid480);
    #720
    shell_exec($vid720);    
    #1080
    shell_exec($vid1080);   
 
}
 
 
 
//<= Первая часть скрипта
 
//Вторая часть скрипта =>
 
if($ret != ''){
 
$connect = ftp_connect('*****', '21', 10800) or die("Не удалось установить соединение с сервером");
$login = ftp_login($connect, '*****', '*****') or die("Не удалось выполнить вход");
ftp_pasv($connect, true);
 
$files = scandir($dir);
    foreach($files as $file){
        if(is_dir($file)){
            
        }else{
 
$ret = ftp_nb_put($connect, $file, $file, FTP_BINARY);
 
while ($ret == FTP_MOREDATA) {
  
   $ret = ftp_nb_continue($connect);
}
    unlink($dir.'/'.$file);
        }
}
 
if ($ret == FTP_FINISHED) {
        
        unlink($_FILES['upl']['tmp_name']);
        rmdir($dir);
}
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2014, 18:54
Ответы с готовыми решениями:

Разбить массив на 4 части по диагонали и посчитать сумму в каждой части
Двумерный массив. Разбить массив на 4 части по диагонали и посчитать сумму в каждой части. Помогите...

Выполнить все по очереди
Доброго времени суток. function jsBitLoor (name) {return { ShowHide:function(t) { ...

Разбить на части
Здравствуйте. В р-тате подсчёта MD5 хеша строки имею 7193518E6F5F0076EF05680742323F9C...

Как выполнить функции по очереди?
Есть шесть функций, нужно выполнить их по очереди. То есть чтобы вторая ждала пока первая...

4
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
27.10.2014, 10:17 2
не смотрел тщательно код, какая задача скрипта?
0
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
27.10.2014, 11:58  [ТС] 3
AmsTaFFix, Первая часть кода берет видео файл и смотря по разрешению кадров конвертит видео 360p-1080p, вторая часть кода берет все файлы созданные первой частью кода и заливает на ftp сервер.
Конвертацией занимается внешняя прога ffmpeg
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
27.10.2014, 13:54 4
т.е. не дожидается окончания выполнения операция shell_exec? так ведь? или у вас просто запускается N фоновых процессов конвертации? (я просто не работал с shell_exec, не знаю как он точно работает)
0
(ノಠ益ಠ)ノ彡┻━┻
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
28.10.2014, 10:10  [ТС] 5
AmsTaFFix, Запускается от одного до четырех процессов, но скрипт не ждет даже одного, просто продолжает работать, если без второй части, то скрипт ожидает завершения всех заданий shell_exec и только тогда завершает свою работу

Добавлено через 17 часов 51 минуту
Решил задачу с помощью
PHP
1
ignore_user_abort(true);
Осталась только проблема с тем что скрипт ни в какую не хочет грузить файлы больше 4 мб, конечно, он их грузит полностью, но только один файл. Про остальные видимо забывает. И браузер продолжает ожидать ответа от сервера.
0
28.10.2014, 10:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 10:10
Помогаю со студенческими работами здесь

Разбить изображения на части
Всем привет! Есть изображение, в котором несколько изображений (png). Как, с помощью JS взять...

Разбить цикл на части
Здравствуйте дорогие друзья, сразу оговорюсь не силен в PHP. Стоит задача сделать так что бы при...

Разбить строку на части
Считываю конфиг файл и получаю вот такую строку - &quot;BuildID=20160407164938&quot;. Подскажите как разбить...

Разбить заголовок на части
Здравствуйте. Задача: есть файл, где храниться название песни вида &quot;Ария - Все что было&quot; Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru