fopen mit Url / memory-limit

fopen mit Url / memory-limit

am 02.08.2006 15:53:41 von elbainfo

Hallo!

Ich möchte Datei (liegt auf externem Server)
mit fopen öffnen und dann direkt an
den Browser schicken.

Code (ohne Errorhandling, zwecks Übersicht)

// Beispiel $file_source = http://www.einwand.info/datei.exe
$rh = fopen($file_source, 'rb');
while (!feof($rh)) {
$Data = fread($rh, 1024);
echo $Data;
}
fclose($rh);


Funktioniert auch - aber nur solange die
externe Datei < MemoryLimit (hier 8MB) ist.

Tritt übrigens auch auf, wenn ich
mit readfile($file_source) arbeite.

Warum ist das so?
Wo werden von diesem Script mehr als 8MB benötigt?

ob_flush nach dem echo wird zwar auf der
einen oder anderen Internet-Seite empfohlen -
ist aber leider nicht möglich -
alte php-Version ohne Update-Möglichkeit.

Hat jemand eine Idee, wie ich über diesen
Weg Dateien > 50MB "ausliefern" kann?


Thanks!
Ciao
digo

Re: fopen mit Url / memory-limit

am 02.08.2006 16:06:57 von Frank Schenk

Wolfgang 'Digo' Hollin wrote:
> Hallo!
>=20
> Ich möchte Datei (liegt auf externem Server)
> mit fopen öffnen und dann direkt an
> den Browser schicken.
>=20
> Code (ohne Errorhandling, zwecks Übersicht)
>=20
> // Beispiel $file_source =3D http://www.einwand.info/datei.exe
> $rh =3D fopen($file_source, 'rb');
> while (!feof($rh)) {
> $Data =3D fread($rh, 1024);
> echo $Data;
> }
> fclose($rh);
>=20
>=20
> Funktioniert auch - aber nur solange die
> externe Datei < MemoryLimit (hier 8MB) ist.

man fpassthru


hth, Frank

Re: fopen mit Url / memory-limit

am 02.08.2006 16:24:49 von elbainfo

Frank Schenk wrote:
> man fpassthru

leider auch hier nach 8MB Ende mit

Allowed memory size of 8388608 bytes
exhausted (tried to allocate 8192 bytes)

in der Zeile fpassthru($rh);

$rh = fopen($file_source, 'rb');
fpassthru($rh);
fclose($rh);

Thanks
Ciao
digo

Re: fopen mit Url / memory-limit

am 02.08.2006 17:23:42 von Carsten Wiedmann

Wolfgang 'Digo' Hollin schrieb:

> // Beispiel $file_source = http://www.einwand.info/datei.exe
> $rh = fopen($file_source, 'rb');
> while (!feof($rh)) {
> $Data = fread($rh, 1024);
> echo $Data;
> }
> fclose($rh);
>
>
> Funktioniert auch - aber nur solange die
> externe Datei < MemoryLimit (hier 8MB) ist.
>
> ob_flush nach dem echo wird zwar auf der
> einen oder anderen Internet-Seite empfohlen -
> ist aber leider nicht möglich -
> alte php-Version ohne Update-Möglichkeit.

Da du ob_flush() ansprichst, ist denn das "output_buffering" generell auf
dem Server aktiviert?

Gruß
Carsten

Re: fopen mit Url / memory-limit

am 02.08.2006 17:51:12 von Sven Drieling

Wolfgang 'Digo' Hollin wrote:

Hallo,

> Frank Schenk wrote:
>> man fpassthru
>=20
> leider auch hier nach 8MB Ende mit

Ein global eingestellter Output-Buffering-Handler
wäre eine Möglichkeit als Ursache.


tschuess
[|8:)

Re: fopen mit Url / memory-limit

am 03.08.2006 07:38:27 von elbainfo

Carsten Wiedmann wrote:

> Da du ob_flush() ansprichst, ist denn das "output_buffering" generell
> auf dem Server aktiviert?

lt. phpinfo ist output_buffering auf off.
ich nehme an, das soll auch auf off sein?


Ciao
digo