Привет all!
есть задача - написать серверное приложение на perl которое, используя сокеты, передавало бы файлы в клиентскую прогу (в частности веб-браузер, качалка и иже с ними.)
Глобально суть в том что строится антилич - с процесом раздачи файлов через сокеты, потому что (то ли руки кривые, то ли.. тут мысль останавливается)
все перепробованные мною до этого способы загружали отдаваемый файл в оперативку и уже оттуда выдавали на-гора (принимая во внимание что отдаются файлы размером 500 - 800 мб) работа таких скриптов принимала угрожающие обороты.
Мне кажется что через сокеты можно реализовать эту задачу. и если да то как.
http://forum.ru-board.com/topic.cgi?forum=24&topic=2994
>http://forum.ru-board.com/topic.cgi?forum=24&topic=2994
Вот именно эти скрипты и проверялись. 3 раза лёг сервер, потому что они отожрали под себя всю оперативную память.
И все же сокетами можно реализовать поставленную задачу?
А можно ли гаечным ключем увеличить мощность мотора?
Вопрос примерно настолько правильно поставлен.Имеем следующие варианты борьбы:
контроль REFERER
создание одноразовых ссылок
раздача кукизов, и контроль наличия оныхИ которые сокеты имеются в виду, TCP?
В смысле свой WEB-сервер писать? Нафига?!
Мне очень близок пример mp3spy.ru. я не думаю что у них сервер с бездонной оперативкой. учитывая сколько раздач у них идет одновременно - не думаю что работает система наподобие ndl (что можно найти по ссылке в Вашем предидущем посте)
а если и так, то каким образом можно осуществить контроль буфера обмена. ведь чтение с винта по fopen идет намного быстрее, чем забирает файл клиент. вот и получается что весь он в результате ложится в оперативку. и кирдык серверу. чем можно ограничить обьем оперативной памяти отдаваемой работающему приложению.?
>а если и так, то каким образом можно осуществить контроль буфера обмена.
>ведь чтение с винта по fopen идет намного быстрее, чем забирает
>файл клиент.По твоему что? По твоему при fopen весь файл читаеся в оперативку? Читаются нужные блоки и то не по open, а по read. А зачем грузить весь файл сразу? Загрузил блок - отдал, загрузил блок - отдал.
>вот и получается что весь он в результате ложится
>в оперативку. и кирдык серверу. чем можно ограничить обьем оперативной памяти отдаваемой работающему приложению.?rlimits