ID:               29922
 Updated by:       [EMAIL PROTECTED]
 Reported By:      info at pion dot xs4all dot nl
-Status:           Open
+Status:           Assigned
 Bug Type:         *Directory/Filesystem functions
 Operating System: Linux
 PHP Version:      5.0.1
-Assigned To:      
+Assigned To:      wez
 New Comment:

I saw a similar (but better) patch by Wez. Wez, can you have a look?


Previous Comments:
------------------------------------------------------------------------

[2004-09-01 22:19:57] info at pion dot xs4all dot nl

I have a small patch for the 5.1.0-dev which solves the
problem but:
  This patch says a normal copy should be used for files
  bigger then 32 MB. But this is an rather arbitrary value
  choosen by me.

Here follows the patch:
-diff -Naur org/php5-200409011830/main/streams/streams.c
php5-200409011830/main/streams/streams.c
--- org/php5-200409011830/main/streams/streams.c        2004-08-31
14:30:59.000000000 +0200
+++ php5-200409011830/main/streams/streams.c    2004-09-01
22:06:11.579747624 +0200
@@ -1276,7 +1276,12 @@
                }
        }
  
-       if (php_stream_mmap_possible(src)) {
+    /*
+    ** We shouldn't use memory mapping on big files just for copying
them.
+    ** It's not an efficient sollution for the vm. So for files above
+    ** 32mb (32*1024^2=33554432) we want a normal copy
+    */
+       if ((php_stream_mmap_possible(src)) && (ssbuf.sb.st_size <
33554432)) {
                char *p;
                size_t mapped;
----------------------

------------------------------------------------------------------------

[2004-09-01 21:55:01] info at pion dot xs4all dot nl

I have checked again but i can't find the bug report.

I have tested with "5.1.0-dev" with checked out version
200409011830 but the problem is still there.

------------------------------------------------------------------------

[2004-09-01 08:44:03] [EMAIL PROTECTED]

I'm sure there is already a bugreport for this, and afaik somebody also
worked on an attempt to fix it. Can you try a PHP 5.1.0-dev snapshot
please? (http://naps.php.net)

------------------------------------------------------------------------

[2004-08-31 22:03:04] info at pion dot xs4all dot nl

- The observation was on rhel 3 with php 4.3.2
- The test in the report was done on a FC1 system with php 4.3.3
- Now i have checked php 4.3.8 on fc2 (the default php) and php 5.0.1

Al have the same result although the speed diferences on the
fc2 system are smaller. This could be caused by different
hardware or differences in the linux vm (2.4.X versus 2.6.X)

------------------------------------------------------------------------

[2004-08-31 19:07:04] info at pion dot xs4all dot nl

Description:
------------
If you copy a file of N megabytes (N in the order of a few
hundred megs) your proces will use the same order of ammount
of memory (or less if the system doesn't have that much).

This is probably because the file is compleetly memory mapped
and than the content is written to an other file.

Probably it will be better to use the behavior of the unix
"cp" command which reads 4k and than writes the 4k.

In this way "cp" is almost a factor two faster than php
and has less impact on the system performance.

Reproduce code:
---------------
<?php
#
# This assumes that there excist a big
# file "/tmp/file_512m" which has 512mb
# of data and that there is enough space
# in "/tmp".
#
  copy ("/tmp/file_512m", "/tmp/target")
?>

Expected result:
----------------
The unix "cp" needed 1 minut 8 seconds to copy
the file and php used 2 and 18 seconds on my desktop
system with 512mb.

Actual result:
--------------
They should be in the same order


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=29922&edit=1

Reply via email to