LINUX.ORG.RU

Nginx - отдача flv + PHP

 


0

1

Здравствуйте! Такая ситуация - есть сайт онлайн кинотеатра, есть два сервера, Основной (скрипты, бд, картинки и прочее) и видеосервер - на нем nginx с отдачей flv с спевдостриммином, все работает нормально. Теперь надо сделать передачу статистики (кто что смотрит в данный момент) на основной сервер. Первая мысль - запускать скрипт, который передаст curlом основному серверу ip,request_uri и прочие параметры которые мне надо передать по текущему клиенту. Собственно вопрос в том как реализовать запуск скрипта при отдаче flv видео или может подскажете решение поизящней? Спасибо



Последнее исправление: Progmer (всего исправлений: 3)

Для nginx вроде можно на перле писать модули... также, может стоит поковырять в сторону X-Accel-Redirect.

drakmail ★★★★
()
Ответ на: комментарий от drakmail

У меня примерно так сделано:

в nginx.conf:

location /get {
    root /var/www/shared/data/files;
    internal;
}

в download.php:

// любой PHP код
header("X-Accel-Redirect: /$path/$subdir/$file"); 

Собственно, перед отдачей хидера в download.php можно делать любой учет.

drakmail ★★★★
()

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

jessey
()
Ответ на: комментарий от drakmail

Спасибо за наводку, как-то сразу не подумал про internal. Конфиг nginx теперь примерно такой

server {
	    root /var/www;
	    index index.php;
	
		location / {
			root /var/www;
			rewrite ^/(.*)\.flv /index.php?id=$1 last;
			fastcgi_pass 127.0.0.1:9000;
			fastcgi_index index.php;
			include fastcgi_params;
			fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
		}
		
		location /video {
			root /var/www;
			internal;
			flv;
		}
	}

а в index.php

//...
// мои проверки и отправка статистики
//...
$filename = $_GET['id'].'.flv';

if(isset($_GET['start']))
  $filename .= '?start='.$_GET['start'];

header("X-Accel-Redirect: /video/".$filename);

Progmer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.