Проблема с чтением файла большого размера

123

Guest
Проблема с чтением файла большого размера

Если применяю просто readfile(); - то работает для небольших файлов (меньше 800 kb). Если файл велик (500 метров), выкачивает только 74 kb и вырубается.

Тогда я вписал конструкцию ниже - стало еще хуже - не работет не для маленьких, ни для больших - выкачивает около 1 kb и вырубается.



....
Сую сюда header'ов разных
....
$file ="ftp://file.rar";
$as = "500000000"; // т.е размер примерно 500 метров
$fd = fopen ($file, "r");
$contents = fread ($fd, $as);
echo $contents;
fclose ($fd);

Здесь читает только 1 kb и вырубается, почему? Как исправить?
 

Winer

Мимо проходил
попробуй читать построчно и построчно выдавать(маленькими кусочками) :) у тебя же нет лишних 500 Мб озу :)
 

123

Guest
Так ведь второй мой способ и с маленькими файлами (75 Kb)не работает.

Очень прошу, напиши хоть маленький примерчик, как выдать поочередно маленькими порциями, у меня не получается
-(
 

Winer

Мимо проходил
PHP:
$fp=fopen(...);
while(!feof($fp))
{
     echo fgets($fp,1024);
};
fclose($fp);
в общем случае так
 

SiMM

Новичок
[m]readfile[/m] не проще/правильнее будет для данной задачи?
Пардон, не заметил, что readfile для больших файлов не срабатывал (факир был пьян, и фокус не удался) - тогда наверно вариант Winerа должен работать.
 

Profic

just Profic (PHP5 BetaTeam)
hobobob
Offtop: легко - на собственном примере :)
Заказчик прислал по почте CD с архивом в 50 метров. А внутри оказались файлики (от 3 до 350 метров), которые нужно парсить. Все файлики нераспакованные не влезли на одну болванку :) ~850 метров. Вот затем и открывать :)
 

Profic

just Profic (PHP5 BetaTeam)
hobobob
Что скриптом? Разархивировать? Я не самоубийца. А вот парсить скриптом. Собственно за это заказчик и платит
 

123

Guest
Antileech

Все работает, сам догадался, как сделать - теперь выдает порциями (использовал просто цикл while() )

Осталось добавить дозагрузку для удаленных файлов (http:// и ftp://)

fseek нельзя, он только для обсолютных файлов (для тех файлов, которые лежат на том же сервере, что и скрипт)

Значит юзать REST (на CURL делать не хочу и не буду)

как прикрепить REST? Везде спрашивал, в ответ мне только на манаул по этому REST и тычат. Читал я его читал, но видимо ничего не понял, потому что его встроить в требуемую PHP-конструкцию у меня не вышло.

Я тут поискал на форуме, нашел нечто подобное, но там только для ftp:

ftp_send("USER $user\n");
ftp_send("PASS $pass\n");
ftp_send("SYST\n");
ftp_send("TYPE I\n");
ftp_send("REST 100\n");
ftp_send("REST 0\n");
ftp_send("PWD\n");
ftp_send("PASV\n");

Я даже не знаю как этот кусок работает! А как для http://?
 

confguru

ExAdmin
Команда форума
123

Не занимайся идиотизмом..
Забираешь нужный файл на локалку..
Потом парсишь ...
 

123

Guest
Ты имеешь ввиду все хранить у себя? И использовать fseek, если уж на то пошло?
 
Сверху