s91

s91
Рейтинг
88
Регистрация
13.04.2009
вы хоть понимаете, что такое занятый ресурс и насколько таких ресурсов больше занимает скрипт на php в сравнении с раздачей статического файла?

Как знал что кто-нибудь что-то подобное напишет.

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

Вот кстати оригинал: http://stream.xmoov.com/download/xmoov-php/

Есть решения которые подключаются непосредственно как модуль Apache и работают значительно быстрее. Но мне хватило и той производительности, которую обеспечивал php-скрипт. А что еще более важно было - это гибкость. Вообщем подробности объяснять не буду. Для решения именно моей задачи это был лучший вариант. А в оптимизации быстродействия просто не было необходимости, т.к. и так всё устраивало

DukeNukem, а что мешает эти деньги отдавать своему интернет-провайдеру? Зачем такие сложности?

За 15 долларов во многих городах можно получить безлимитный 100-мегабитный канал в обе стороны как на раздачу так и на закачку.

Даже в таком захудалом городишке, где живу я, безлимитка на 10 мегабит стоит $10

Или причина в другом?

Или блокируйте по IP. Доступ к видеофайлам только тем IP-адресам которые посетили сайт за последние скажем 2 часа. А в код самого сайта встроить код разрушитель фреймов, чтоб если Ваш сайт грузился во фрейме, то он раскрывался на весь экран.

Вот Вам пример обработчика flv файлов используемого лично мной. Файл flv.php:

<?php

include_once 'inc/db_config.php';

set_time_limit(60*60*60);

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

$codestr=array(' '=>'',"\""=>'',"\'"=>'','`'=>'');
$filename=strtr($filename,$codestr);
$start=strtr($start,$codestr);
$videosrc='';

if ($filename!='')
{
$nf=explode('/',$filename);
$thumbid=$nf[1];
$nf=explode('.',$nf[2]);
$md5chk=$nf[0];
$ext=$nf[1];

global $db_host, $db_name, $db_user, $db_pass;
$db = mysql_connect($db_host, $db_user, $db_pass)
or die("Could not connect : " . mysql_error());
mysql_select_db($db_name) or die("Could not select database");

$query="SELECT * FROM sdl_videothumbs_".strtr(strtolower($_SERVER['SERVER_NAME']),array('.'=>'_','-'=>'_'))." WHERE `thumbid`='$thumbid' LIMIT 1";
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$thumb=$row;
mysql_free_result($result);

if ($thumb!=false)
{
$query="SELECT * FROM sdl_video WHERE `id`='".$thumb[1]."' LIMIT 1";
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$video=$row;
mysql_free_result($result);

if ($video!=false)
{
$md5=md5($thumbid.$video[1]);
if ($md5==$md5chk)
{
$videofullid=$video[1];
$videosrc='videosrc/'.substr($videofullid,0,2).'/'.substr($videofullid,2,2).'/'.substr($videofullid,0,24).'/'.$videofullid.'.'.$ext;
}
}
}
mysql_close($db);

if ($videosrc!=''&&file_exists($videosrc))
{
$filename=$videosrc;
$from=$to=0; $cr=NULL;
if ($ext=='flv')$from=$start;
if (isset($_SERVER['HTTP_RANGE'])) {
$range=substr($_SERVER['HTTP_RANGE'], strpos($_SERVER['HTTP_RANGE'], '=')+1);
$from=strtok($range, '-');
$to=strtok('/'); if ($to>0) $to++;
if ($to) $to-=$from;
header('HTTP/1.1 206 Partial Content');
$cr='Content-Range: bytes ' . $from . '-' . (($to)?($to . '/' . $to+1):filesize($filename));
} else header('HTTP/1.1 200 Ok');
$etag=md5($filename);
$etag=substr($etag, 0, 8) . '-' . substr($etag, 8, 7) . '-' . substr($etag, 15, 8);
header('ETag: "' . $etag . '"');
header('Accept-Ranges: bytes');
$contentlen=filesize($filename)+$to-$from;
if ($start!=0)$contentlen+=13;
header('Content-Length: ' . $contentlen);
if ($cr) header($cr);
header('Connection: close');
header("Content-Type: video/x-".$ext);
header('Last-Modified: ' . gmdate('r', filemtime($filename)));
$f=fopen($filename, 'r');
header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
if ($from) fseek($f, $from, SEEK_SET);
if($from != 0)
{
print('FLV');
print(pack('C', 1));
print(pack('C', 1));
print(pack('N', 9));
print(pack('N', 9));
}
if (!isset($to) or empty($to)) {
$size=filesize($filename)-$from;
} else {
$size=$to;
}
$downloaded=0;
while(!feof($f) and !connection_status() and ($downloaded<$size)) {
echo fread($f, 512000);
$downloaded+=512000;
flush();
}
fclose($f);
die();
}
}
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
echo '404 Страница не найдена';
?>

Тут правда много лишнего, например работа с БД, но Вы можете заменить на свой обработчик. Например искать в БД IP-адрес с которого идет доступ, и если не найден такой IP в статистике доступа к сайту за последние 2 часа, посылать на 404.

Просмотр файла например: flv.php?file=video1.flv

У меня просто защита чуть-чуть в другом была.

Обычно 5-10Гб уже создают бОльшую нагрузку, чем 5%. Но хотя тут о движка сайта ещё зависит и от посещаемости.

От размера файлов зависит. Можно на 10 Гб записать 10 фильмов высокого для веба качества и крутить их в онлайне. Будет большая нагрузка на канал и маленькая на процессор.

Последний сайт у меня занимал 200 Гб(50 000 видеороликов для взрослых). Нагрузка на процессор не превышала 5-10% при 10 000 посетителях в сутки.

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

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

Слава Шевцов:
Вы представляете себе размеры этого хостера?

И что? Тем не менее он является дешевым, т.е. с самыми низкими ценами как Вы и написали.

Вообще мне кажется firstvds работает почти себе в убыток, приучая пользователей к своей, кстати удобной, панели. Другие хостинги с этой панелькой стоят значительно дороже, не говоря уже о том чтоб поставить такую панельку на свой сервер

В большинстве случаев деление на тарифы у хостеров вообще условно.

Особенно смешно выглядят тарифы, где на одном тарифе 2 FTP аккаунта и 3 почтовых ящика, а на более дорогом крутом тарифе FTP аккантов целых 5, и 10 почтовых акков. Интересно на кого такие тарифы расчитаны :D

А место на диске вообще нужно только для файлоархивов/видеоархивов. Для обычного сайта хватит обычно не более 50-100 мегабайт

Слава Шевцов:

Из сказанного вывод: на хостинге с самыми низкими ценами девочки-звонилки не будет никогда.

на firstvds есть звонильщики. звонят по поводу и без повода, то опрос какой-то, то спрашивают всем ли довольны, а когда закончились деньги на счету(перешел на другой хостинг), позвонили спросили, буду ли я дальше пользоваться их услугами. Но лично меня такие звонильщики только напрягают. Я считаю что доставать клиента тоже не стоит. Может конечно другие любят внимание со стороны хостера, но уж точно не я.

Конечно, мечта каждого хостера, чтоб клиент платил столько же, а использовал ресурсов в 2 раза меньше=) Ведь тогда можно разместить 2 клиента вместо одного.

Himiko, я ни против Вас, ни против ваших услуг ни в коем случае ничего не имею.

Но мне кажется, если Вы работаете в данной сфере, должны со мной согласится, что большинство хостинг компаний сейчас страдают оверселлингом, и думают что сервера резиновые.

Бывает покупаешь хостинг, буквально всё летает, нарадоваться не можешь, проходит пару месяцев, и начинается, то отклик от сайта запредельный и всё жутко тормозит, то на FTP войти невозможно, то еще какие-то проблемы.

Ну, что поделаешь такой у меня опыт работы с хостерами=)

Хотя вру, мы не отключаем. Мы связываемся с клиентом, сообщаем ему о превышении и прошу разобраться с нагрузкой.

Вот это правильный вариант. Если Вы действительно так делаете.

Himiko:
1. Скорее всего нагрузку сказали от одного ядра. (так обычно делается).

Об этом кстати не подумал. Но тем не менее не смягчает вины хостера.

Himiko:
2. В пиках посещаемости или при одновременном заходе поисковых ботов вполне нагрузка может повышаться.
3. Даже если вас и обманули, то я думаю, что это единичные случаи. Как я и говорил, нигде про такое даже не слышал. Хотя работал с несколькими крупными хостерами.

Конечно до этого я весь день загружал и распаковывал архивы(~50 гигабайт) через интерфейс cPanel. Не спорю, может что-то и превысил, но единоразово(т.к. только купил хостинг и перевозил все файлы).

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

Но может дело даже не в этом, не знаю. Но причиной переезда от них была другая - то что у них сервер ломался минимум раз в 2 дня. Сделали полный возврат денег очень быстро, буквально через 2 часа после запроса.

Если честно у citrexhosting.com обидело больше другое - то что сайты и так через раз работали в связи с постоянными поломками их сервера, так еще и сами специально отключают за мнимые нагрузки

Ну не верю и никогда не поверю что 500-1000 человек в сутки, пусть сайты и на тяжелом движке и просмотром потокового видео высокого качества может нагрузить даже одно ядро процессора на 6.5%

Самый лояльный в плане биллинга хостинг мне попался fdcservers.net. Они на следующий день после окончания периода хостинга выставляют счет, который нужно оплатить за 3 банковских дня(выходные и праздники не считаются). Т.е. 3 дня как бы авансом дают пользоваться. Оченб даже удобно

До этого выключали без предупреждения якобы за нагрузку на сервер и заставили перейти на максимальный тариф.

Стандартная отмазка. Уверен что Вы ничего не превысили. Скажите своему хостеру чтоб в 10 раз меньше сайтов на сервер вешал, и проблем с нагрузкой не будет.

Мне хостинг cirtexhosting.com(реселлер хостинга на серверах от fdcservers.net) мне тоже заломил, что мои сайты используют 6.5% 4-ядерного неслабого процессора(Это при 500-1000 посетителях в сутки!!!).

Когда съехал от них, и взял сервер напрямую у fdcservers.net, оказалось мои сайты съедают ~0.5% от в 2 раза более слабого сервера!!

Таких хостеров лучше сразу посылать на 3 буквы. А лучше брать выделенный сервер, пусть даже самый дешевый, чтоб спастись от необоснованых ничем претензий хостеров, которые хотят срубить на одном сервере больше чем с него возможно выжать.

Всего: 1051