Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Получение и передачи файла клиенту NGINX , php , js

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Segol
Отправлено: 05 Февраля, 2016 - 12:10:58
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Добрый день.

добрый день, в поисках адаптированного метода передачи стрима клиенту.
то есть получение контента по ссылке и передачи клиенту. При этом, при определенных условиях производит остановку передачи (к примеру изменения в базе данных) и контролировать скорость отдачи.

имеется NGINX , php , js


ест рабочий вариант..Но данный метод считаю не совсем оптимальный для передачи..по ряду недостатков.

Поэтому хотел бы обратится с просьбой о получении (написании) оптимального кода для передачи

Не безвозмездна..

мой метод выглядит на данный момент так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $bin = 'fajl.ts';
  4.  
  5. if (ob_get_level()) {
  6. fastcgi_finish_request();
  7. }
  8. ini_set('upload_max_filesize','4M');
  9. ini_set('post_max_size','4M');
  10. ini_set('output_buffering', 2048);
  11. ini_set('zlib.output_compression', 0);
  12. header('Content-Type: application/x-mpegURL');
  13. header('Content-Disposition: attachment; filename=' . basename($bin));
  14. header('Expires: 0');
  15. header('Cache-Control: must-revalidate');
  16. header('Pragma: public');
  17. header('Content-Length: ' . filesize($bin));
  18.  
  19.  
  20.  
  21. if ($fd = fopen($bin, 'r')) {
  22. while (!feof($fd)) {$i++;
  23. if ($i > 3000) {$s++; $i=0;}
  24. if ($s== 2) {$s=0;
  25. $DB->query("SELECT proverka  dannyx  polzovatelya");
  26. $macdost2=$DB->next_record();
  27. if (isset($macdost2)) {$akt1 = $macdost2['aktiv'];
  28. if ($kode1==$kontrole){$keys='1';}else{$keys='0';}//proverka  na identichnist coda
  29. if (($akt1 !='1')){
  30. fclose($fd);
  31. fastcgi_finish_request();
  32. exit();
  33. }}
  34. }
  35. print fread($fd, 8192);
  36. }
  37. fclose($fd);
  38. exit();
  39. }
  40. ?>

(Отредактировано автором: 05 Февраля, 2016 - 12:11:45)

 
 Top
Viper
Отправлено: 05 Февраля, 2016 - 19:11:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Непонятно что вы пытаетесь сделать в вашем коде... Если вы имеете ввиду отдачу видео клиенту, то ваш код как минимум приведет к падению сервера.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Segol
Отправлено: 05 Февраля, 2016 - 19:17:22
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Да , код делает нагрузку на сервер поэтому ишю алтернативу

нашел так функция readfile более шедящий вареант, но она не останавливается при манипуляциях..


делаю так, продолжает загрузку...хотя должно вроде бы как отклучить через 5 сек...

PHP:
скопировать код в буфер обмена
  1. while (true) {
  2. $i++;
  3. if($i ==  1){
  4. readfile($file);
  5. }else if($i >  2){
  6. fclose($file);
  7. }
  8. sleep(5);
  9. }

(Добавление)
может подскажите более грамотный метод передачи.. с возможностью контроля и приостановки отдачи при необходимости ?

(Отредактировано автором: 05 Февраля, 2016 - 19:18:08)

 
 Top
Viper
Отправлено: 05 Февраля, 2016 - 19:21:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




готовое, правда под Joomla, но ничего сложного переделать https://github[dot]com/Globulopolis/[dot][dot][dot]lesystem.php#L67
Основано на https://github.com/diversen/http-send-file, но у меня запилена поддержка range. Т.е. не будет проблем с прокруткой видео online.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Segol
Отправлено: 05 Февраля, 2016 - 19:38:48
Post Id


Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Буду Вам очень признателен , если поможете переделать ..
можно как нибудь в чат выйти, скайп или аську ?
 
 Top
Viper
Отправлено: 05 Февраля, 2016 - 19:56:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Разве что завтра, щас на работе. В ПМ черканите.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB