|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hey I have a script that I am trying to figure out to allow a remote file to be sent to a client's browser. It works ok for small files, but it keeps timing out for large files. I don't think it should even take as long as it does (i.e. about 10seconds) before it pops up a dialog box for me to download a 700KB file. Any ideas? It times out on a line around which reads while (!feof($fp)) { $tmp .= fread($fp, 64); } Thanks ![]() |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Barney Tramble wrote:
> > Hey > > I have a script that I am trying to figure out to allow a remote file to > be sent to a client's browser. It works ok for small files, but it keeps > timing out for large files. I don't think it should even take as long as > it does (i.e. about 10seconds) before it pops up a dialog box for me to > download a 700KB file. Any ideas? It times out on a line around which reads > > while (!feof($fp)) > { > $tmp .= fread($fp, 64); > } Well you're still reading the file (or url or something) at this point. Is it the reading of the file or sending it to the browser that fails? A bit of context might for this code too. Is this reading a local file or url or what? If it's a local file, use fpassthru (http://php.net/fpassthru) if it's not too big. If it is a big file then use your loop but don't store it in a $tmp variable, just output it. -- Postgresql & php tutorials http://www.designmagick.com/ |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Tue, January 29, 2008 12:45 pm, Barney Tramble wrote:
> I have a script that I am trying to figure out to allow a remote file > to > be sent to a client's browser. It works ok for small files, but it > keeps > timing out for large files. I don't think it should even take as long > as > it does (i.e. about 10seconds) before it pops up a dialog box for me > to > download a 700KB file. Any ideas? It times out on a line around which > reads > > while (!feof($fp)) > { > $tmp .= fread($fp, 64); > } Your script is reading the whole file, 64 measly bytes at a time, into a monstrous string $tmp. Then, finally, when you've loaded the whole [bleep] file into RAM in $tmp, you just echo it out, right? Don't do that. :-) while (!feof($fp)){ echo fread($fp, 2048); } You can play around with 2048 versus 64 versus 1000000 on your box to see what's "fastest" but I'll be pretty shocked if 64 bytes is the best performer... -- Some people have a "gift" link here. Know what I want? I want you to buy a CD from some indie artist. http://cdbaby.com/from/lynch Yeah, I get a buck. So? |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Richard Lynch wrote:
> Your script is reading the whole file, 64 measly bytes at a time, into > a monstrous string $tmp. > > Then, finally, when you've loaded the whole [bleep] file into RAM in > $tmp, you just echo it out, right? > > Don't do that. > > :-) > > while (!feof($fp)){ > echo fread($fp, 2048); > } And if the OP is opening the file anyway, he might as well use readfile() instead. /Per Jessen, Zürich |
|
![]() |
| Outils de la discussion | |
|
|