The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FIFO на Perl, !*! mthawk, 28-Июл-05, 17:08  [смотреть все]
Доброго времени суток.
Есть вот такая проблема. CGI скрипт по запросу должен открывать бинарный файл солидного обьема от 500 Мб и отдавать его на STDOUT.
Банальная конструкция

open (F,'SOME_BIN_FILE');
binmode(F);
while (<F>)
  {
  print;
  }
close(F);

убивает сервер в хлам. 99.9 % CPU и памяти по обьему файла.

Нужно как то контролировать, были ли отданы предидущие NNNN байт на STDOUT, что бы sysread() прочитало следующие.

Заранее благодарен за любые подсказки.

  • FIFO на Perl, !*! ihor, 18:16 , 28-Июл-05 (1)
    попробуйте так:
    # ===========================
    $fname = '/tmp/5.4-RELEASE-i386-disc1.iso';
    $bufsize = 4096;

    open(FILE, $fname) || die "Can't open: $!";
    while(read(FILE, $buf, $bufsize)) {
        print $buf;
    }
    close(FILE);

    • FIFO на Perl, !*! mthawk, 01:16 , 06-Авг-05 (2)
      >попробуйте так:
      ># ===========================
      >$fname = '/tmp/5.4-RELEASE-i386-disc1.iso';
      >$bufsize = 4096;
      >
      >open(FILE, $fname) || die "Can't open: $!";
      >while(read(FILE, $buf, $bufsize)) {
      > print $buf;
      >}
      >close(FILE);

      Огромное спасибо за идею. Все работает, сервер жив.
      В принципе понял свою предидущую ошибку.
      Еще раз спасибо.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру