ID:               29922
 Comment by:       ben at prince dot org
 Reported By:      info at pion dot xs4all dot nl
 Status:           Assigned
 Bug Type:         *Directory/Filesystem functions
 Operating System: Linux
 PHP Version:      5.0.1
 Assigned To:      wez
 New Comment:

Just so we can be clear, while I understand this affects readfile() as
well as copy(), does it also affect include()?


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

[2004-09-02 14:53:18] [EMAIL PROTECTED]

IIRC, I added a limit for this kind of thing for readfile() (aka
php_stream_passthru), which could be applied here.

Discussions on the list (with Andi) suggested mmap'ing chunks of 1MB
and doing it that way.

If someone wants to cook up a patch for either of these, that's fine by
me; I'm not sure how soon I'll be able to look into it.

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

[2004-09-02 08:19:24] [EMAIL PROTECTED]

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

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

[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)

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/29922

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

Reply via email to