Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Posted on
- fpassthru from remote URI
September 21, 2004, 11:16 am
rate this thread
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
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
September 22, 2004, 12:48 pm
Re: fpassthru from remote URI
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