Как вычислить номер потока при мультисессионной скачке файла

ast-ross

Новичок
Как вычислить номер потока при мультисессионной скачке файла

Народ, все перерыл! Ну нет ответа, нет!
В общем пишу скрипт отдачи пользователю файла в поддержкой мультипоточности, докачки и прочего... Вобщем все уже в принципе написанно. Однако вот такая вот проблема, хочу сделать ограничение по потокам.
Есть таблица в sql - stream_control поля:
user_ip, file_id, stream

Алгоритм такой:
пришел запрос где указан наш ид файла:
пример

http://localhost/getfile.php?file_id=7
PHP:
<?
$limit=3; // максимальное кол-во потоков
$stream=? // вот как раз номер потока мне и надо знать, далее все станет ясно.

sleep($stream);

//делаем выборку из таблицы:
$check_limit=mysql_query("select * from stream_control where user_ip='".$_SERVER['REMOTE_ADDR']."' and file_id='".$_GET['file_id']."'");
if (mysql_num_rows($check_limit)<$limit) {
 mysql_query("INSERT INTO stream_control (user_ip, file_id, stream) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".$_GET['file_id']."', '".$stream."' )");
 //-------- выдеам файл порциями в цикле...
 // цикл
 // ...
 }
else {
 // error 403 посылаем заголовки типа доступ запрещен.
 }
Так вот, суть в том, что если не использовать переменную $stream и запустить качалку типа flash get, все (допустим 5 потоков) обратятся к скрипту одновременно. Следовательно ни одной записи еще в базе не будет и условие if сработает как true, и в базу запишется все 5 потоков и начнется выдача по всем 5 потокам. Однако если идентифицировать поток, то для каждого потока перед выборкой будет задержка в секундах = номеру его потока, следовательно предыдущий поток сработает на 1 сек. раньше и успеет добавить запись о себе в базу.

Вопрос, как из заголовков выдернуть номер потока. Или вычислить его, имея Content-Range, вобщем я и так и сяк и вобщем то никак... Помогите кто чем может :)
Может мой подход вообще в корне не верный? Покритикуйте или подскажите как надо...
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
LOCK TABLES stream_control WRITE

select ...
insert...

UNLOCK TABLES
 

ast-ross

Новичок
Автор оригинала: varan
LOCK TABLES stream_control WRITE

select ...
insert...

UNLOCK TABLES
Опа! Подробнее? В mysql можно блокировать таблицы? А все 5 потоков одновременно не заблокирубт таблицу?
и как правильно будет?
mysql_query("LOCK TABLES stream_control WRITE");
mysql_query("SELECT *** WHERE ***");
mysql_query("UNLOCK TABLES");
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
http://www.mysql.ru/docs/man/LOCK_TABLES.html
 

fixxxer

К.О.
Партнер клуба
Конфиг облазить не получится, надо лазить или по гуглю, или по исходникам оного :)
Я подозреваю что для твоей задачи прекрасно подойдет какой-нибудь из antiflood-модулей.
 
Сверху