Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z fopen() przy pliku 380 MB
Forum PHP.pl > Forum > PHP
Sajrox
Witam,

Mam kłopot z otwarcie pliku o rozmiarze 380 MB.

  1. <?php
  2. $fo = fopen('./plik.txt', 'r+');
  3. ?>


Ten oko kod wyświetla błąd:

Warning: fopen('./plik.txt') [function.fopen]: failed to open stream: Invalid argument in C:\wamp\www\.... on line 269


Czy jest jakiś sposób na otwarcie tak dużych plików ?
Zależy mi aby odczytać dany plik i go przeparsować linia po linii, jednak bez fopen()" title="Zobacz w manualu PHP" target="_manual nie mam jak tego dokonać.

------------------
Edit:
./plik.txt to jest tylko przykład.
Orginalny plik ótry chce otworzyć jest pod adresem:
http:/www.czesci24.pl/adm/porownywarki/nokaut3.xml

Jeśli komuś się uda go otworzyć za pomocą fopen() to naprawde wielki podziw smile.gif
dr_bonzo
Dzizez, zle sciezke podales, 300MB plik to maly plik smile.gif
Gdzie masz (w jakim katalogu) plik otwierany w przegladarce (index.php), gdzie masz includowany plik (ten z fopen()) i gdzie masz plik: plik.txt
phpion
Cytat(dr_bonzo @ 28.11.2008, 04:59:19 ) *
Dzizez, zle sciezke podales, 300MB plik to maly plik smile.gif
Gdzie masz (w jakim katalogu) plik otwierany w przegladarce (index.php), gdzie masz includowany plik (ten z fopen()) i gdzie masz plik: plik.txt

Hmmm, a czy w takim wypadku nie otrzymałby błędu "No such file or directory"?

czarodziej.gif Błąd pewnie jest stąd, że próbujesz otworzyć plik ze zmiennymi w adresie:
http://www.webmaster-talk.com/php-forum/52...d-argument.html
Sajrox
sytuacja jest nastepująca.
Musze pobrać plik z innego serwera a dokladnie:
http:/www.czesci24.pl/adm/porownywarki/nokaut3.xml

Mój błąd że od razu nie podałem pełnej oryginalnej ścieżki ale chciałem się dowiedzieć czy w ogóle można otwierać tak duże pliki za pomocą fopen()

A wiec:
Mam kod
  1. <?php
  2. $fo = fopen('http:/www.czesci24.pl/adm/porownywarki/nokaut3.xml', 'rb');
  3. ?>


i otrzymuje własnie taki błąd o którym wspomniałem wczesniej:

Warning: fopen('http:/www.czesci24.pl/adm/porownywarki/nokaut3.xml') [function.fopen]: failed to open stream: Invalid argument in C:\wamp\www\.... on line 269


Przy mniejszych plikach nie ma problemu, jednak tutaj sami widzicie sad.gif
Plik na pewno stnieje, ponieważ jak go otworze w przeglądarce to się pobiera. Jednak fopen()" title="Zobacz w manualu PHP" target="_manual już nie radzi :/

Czy ta funkcja ma jakieś ograniczenie ?
dr_bonzo
No fajnie, podajesz wymyslony kod a nie ten ktory ci nie dziala.

Hmm podajesz jedno "/" za http.

Wklej DOKLADNIE ten kod ktorego uzywasz, a nie wpisuj go tu na nowo.
Sajrox
Przepraszam mój błąd winksmiley.jpg Za 1 razem po prostu chciałem wiedzieć czy funkcja fopen() jest w stanie otworzyć pliki o rozmiarze ok 380 mb.
Na to wygląda że może smile.gif Faktycznie błąd tkwił w "/" aż wstyd mi ale każdemu może się zdarzyć winksmiley.jpg

Przed zamknięciem wątku zapytam się jeszcze czy wie ktoś może czy funkcja fopen()" title="Zobacz w manualu PHP" target="_manual ma jakieś ograniczenie co do wielkości pliku ?
dr_bonzo
Do 2GB spokojnie ci obsluzy - a wieksze - musisz poczytac.
Sajrox
No właśnie trudno jest odnaleźć coś o tym.
Ewentualnie odczytujemy plik po kawałkach używając:
  1. <?php
  2. file_get_contents($filename, FILE_TEXT, true, $od, $do);
  3. ?>


Ale nie jestem pewien czy to poradzi sobie z dużym plikiem powyżej 2GB.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.