fpassthru from remote URI

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • stefan.machwirth@debeka.de

    fpassthru from remote URI

    Hi!

    I have a PHP page "transfer.p hp" 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
    environment).
  • Daniel Tryba

    #2
    Re: fpassthru from remote URI

    stefan.machwirt h@debeka.de wrote:[color=blue]
    > 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
    > environment).[/color]

    fopen/fsockopen should have worked. Code?

    --

    Daniel Tryba

    Comment

    • stefan.machwirth@debeka.de

      #3
      Re: fpassthru from remote URI

      Daniel Tryba wrote:
      [color=blue][color=green]
      >>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
      >>environment ).[/color]
      >
      >
      > fopen/fsockopen should have worked. Code?[/color]

      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... :-/

      Stefan

      Comment

      Working...