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
Форумы портала PHP.SU :: Версия для печати :: Получение и передачи файла клиенту NGINX , php , js
Форумы портала PHP.SU » » Работа с сетью » Получение и передачи файла клиенту NGINX , php , js

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

1. Segol - 05 Февраля, 2016 - 12:10:58 - перейти к сообщению
Добрый день.

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

имеется 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. ?>
2. Viper - 05 Февраля, 2016 - 19:11:59 - перейти к сообщению
Непонятно что вы пытаетесь сделать в вашем коде... Если вы имеете ввиду отдачу видео клиенту, то ваш код как минимум приведет к падению сервера.
3. Segol - 05 Февраля, 2016 - 19:17:22 - перейти к сообщению
Да , код делает нагрузку на сервер поэтому ишю алтернативу

нашел так функция 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. }

(Добавление)
может подскажите более грамотный метод передачи.. с возможностью контроля и приостановки отдачи при необходимости ?
4. Viper - 05 Февраля, 2016 - 19:21:19 - перейти к сообщению
готовое, правда под Joomla, но ничего сложного переделать https://github[dot]com/Globulopolis/[dot][dot][dot]lesystem.php#L67
Основано на https://github.com/diversen/http-send-file, но у меня запилена поддержка range. Т.е. не будет проблем с прокруткой видео online.
5. Segol - 05 Февраля, 2016 - 19:38:48 - перейти к сообщению
Буду Вам очень признателен , если поможете переделать ..
можно как нибудь в чат выйти, скайп или аську ?
6. Viper - 05 Февраля, 2016 - 19:56:01 - перейти к сообщению
Разве что завтра, щас на работе. В ПМ черканите.

 

Powered by ExBB FM 1.0 RC1