|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #10800 File uploads take ~70 times longer than downloading files on Apache/PHP.
Submitted: 2001-05-10 17:51 UTC Modified: 2001-10-28 17:02 UTC
From: paul at gryphyn dot com Assigned:
Status: Closed Package: HTTP related
PHP Version: 4.0.5 OS: NT 2000
Private report: No CVE-ID: None
 [2001-05-10 17:51 UTC] paul at gryphyn dot com
I logged this prior to PHP 4.0.5 and was told to do it again if it still occurs. Please help:

ID: 9294 
Updated by: andi 
Reported By: 
Old-Status: Open 
Status: Closed 
Bug Type: Performance problem 
PHP Version: 4.0.2 
Assigned To:  
Please try PHP 4.0.4pl1 or 4.0.5 which is due out tomorrow and open a new bug report 
if this still happens. 
Previous Comments: --------------------------------------------------------------------------- 
[2001-02-16 03:59:04] 
Sorry - I'm also using code like this to do the upload: 
<FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST> 
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="200000000"> 
Send this file: <INPUT NAME="userfile" TYPE="file"> 
<INPUT TYPE="submit" VALUE="Send File"> 
[2001-02-16 03:57:16] 
When performing a file upload, PHP runs the CPU to 100% and takes 3.5-4 minutes on 
a Pentium III 850MHz CPU to upload a 10MB file when downloading the same file on 
Apache/PHP only takes 3 seconds on the same host and client. It appears the file 
is being parsed when being uploaded. Is there an option to tell PHP to upload the 
data and nothing else? Otherwise, it is roughly 70 times slower to upload a file 
than to download one. 
I'm using Nusphere's CD when installing the software. 


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2001-07-21 21:46 UTC]
Could you please include the script that accepts the form
input and uploads the file (the ACTION param of the form.)

 [2001-08-07 12:27 UTC]
status -> feedback
 [2001-08-08 12:30 UTC] paul at gryphyn dot com
I'm sorry it took so long in getting back Andy. Your question:

"Could you please include the script that accepts the form 
input and uploads the file (the ACTION param of the form.)"

Here it is:

  if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
    $tmp_file = dirname(tempnam('', ''));
  $tmp_file .= '/' . basename($userfile);
  // Admin may have trailing slash in php.ini...
  // Did it upload? */
  if (ereg_replace('/+', '/', $tmp_file) == $userfile);
    copy($userfile, "$basedir/$name");
    echo "Success verbage goes here.";
  } else {
    echo "Some kind of warning goes here.";

Thanks Andy,

 [2001-10-28 17:02 UTC]
This should be fixed in CVS now. You can try the latest 
development build from but
make sure it's dated after 27th of October 2001.

Also, there are some minor leaks still in the new code.
If you encounter such leaks, please send the shortest
possible code + html with which you can reproduce the leak
to (or me) so we can get rid of these leaks. 

This fix will be in PHP 4.2.0.


PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Fri Oct 30 09:01:25 2020 UTC