fpassthru from remote URI

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I have a PHP page "transfer.php" and a MySQL db. The client should
download binary files by "http://.... /transfer.php?ID=xx", where the
ID is searched in the db and the real URI is read.

In the transfer.php the "Content-Encoding" and the
"Content-Disposition" header fields are set. Then I do a fpassthru() or
a readfile(), for example: readfile
("http://www.someserver.com/somefile.zip ").

This works fine - theoretically... The problem is, that it takes a long
time befor the download dialog appears in the browser. I tried
readfile, I tried fpassthru, I tried "fopen ('http://...')" with an
"until feof"-loop. The script or the server first downloads the whole
file from the URL, and then passes the output buffer to the client :-(

Ah, I also tried ob_flush() and flush() ... no gain :-(

Is there a way to send the file data to the client while reading the
URL? I use PHP 4.3.7 and the CGI Gateway (Xitami in my test

Re: fpassthru from remote URI

stefan.machwirth@debeka.de wrote:
Quoted text here. Click to load it

fopen/fsockopen should have worked. Code?


  Daniel Tryba

Re: fpassthru from remote URI

Daniel Tryba wrote:

Quoted text here. Click to load it

The problem is located. Not PHP buffers cause the delay, but Xitami. I
could simulate it with a "echo $somewhat; flush(); sleep (2);"-loop.
Buffering was disabled in php.ini. These delayed script also did not
transfer line by line to the browser with Xitami. But in my real
environment with Apache it worked.

I found some hints about the Xitami buffering in other newsgroups and
boards. Unfortunately it is not editable :-(  Don't understand this
strategy. Xitami is very tiny and excellent for a small developing
environment. But if they don't improve it I would have found the first
limitation... :-/


Site Timeline