mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00
Improved Zend Memory Manager to guarantee reasonable time for worst cases of best-fit free block searching algorithm.
This commit is contained in:
parent
13aac95bfc
commit
d514bf27a6
5 changed files with 673 additions and 338 deletions
5
NEWS
5
NEWS
|
@ -9,6 +9,8 @@ PHP NEWS
|
||||||
- Upgraded SQLite 3 to version 3.3.13 (Ilia)
|
- Upgraded SQLite 3 to version 3.3.13 (Ilia)
|
||||||
- Upgraded PCRE to version 7.0 (Nuno)
|
- Upgraded PCRE to version 7.0 (Nuno)
|
||||||
- Updated timezone database to version 2007.3. (Derick)
|
- Updated timezone database to version 2007.3. (Derick)
|
||||||
|
- Improved Zend Memory Manager to guarantee reasonable time for worst cases
|
||||||
|
of best-fit free block searching algorithm. (Dmitry)
|
||||||
- Improved SPL (Marcus)
|
- Improved SPL (Marcus)
|
||||||
. Added SplFileInfo::getBasename(), DirectoryIterator::getBasename().
|
. Added SplFileInfo::getBasename(), DirectoryIterator::getBasename().
|
||||||
. Added SplFileInfo::getLinkTarget(), SplFileInfo::getRealPath().
|
. Added SplFileInfo::getLinkTarget(), SplFileInfo::getRealPath().
|
||||||
|
@ -29,6 +31,7 @@ PHP NEWS
|
||||||
via __get()). (Dmitry)
|
via __get()). (Dmitry)
|
||||||
- Fixed bug #40815 (using strings like "class::func" and static methods in
|
- Fixed bug #40815 (using strings like "class::func" and static methods in
|
||||||
set_exception_handler() might result in crash). (Tony)
|
set_exception_handler() might result in crash). (Tony)
|
||||||
|
- Fixed bug #40809 (Poor perfomance of ".="). (Dmitry)
|
||||||
- Fixed bug #40805 (Failure executing function ibase_execute()). (Tony)
|
- Fixed bug #40805 (Failure executing function ibase_execute()). (Tony)
|
||||||
- Fixed bug #40800 (cannot disable memory_limit with -1). (Dmitry, Tony)
|
- Fixed bug #40800 (cannot disable memory_limit with -1). (Dmitry, Tony)
|
||||||
- Fixed bug #40794 (ReflectionObject::getValues() may crash when used with
|
- Fixed bug #40794 (ReflectionObject::getValues() may crash when used with
|
||||||
|
@ -90,6 +93,8 @@ PHP NEWS
|
||||||
- Fixed Bug #40352 (FCGI_WEB_SERVER_ADDRS function get lost). (Dmitry)
|
- Fixed Bug #40352 (FCGI_WEB_SERVER_ADDRS function get lost). (Dmitry)
|
||||||
- Fixed bug #40286 (PHP fastcgi with PHP_FCGI_CHILDREN don't kill children when
|
- Fixed bug #40286 (PHP fastcgi with PHP_FCGI_CHILDREN don't kill children when
|
||||||
parent is killed). (Dmitry)
|
parent is killed). (Dmitry)
|
||||||
|
- Fixed bug #40261 (Extremely slow data handling due to memory fragmentation).
|
||||||
|
(Dmitry)
|
||||||
- Fixed bug #40236 (php -a function allocation eats memory). (Dmitry)
|
- Fixed bug #40236 (php -a function allocation eats memory). (Dmitry)
|
||||||
- Fixed bug #40109 (iptcembed fails on non-jfif jpegs). (Tony)
|
- Fixed bug #40109 (iptcembed fails on non-jfif jpegs). (Tony)
|
||||||
- Fixed bug #39836 (SplObjectStorage empty after unserialize). (Marcus)
|
- Fixed bug #39836 (SplObjectStorage empty after unserialize). (Marcus)
|
||||||
|
|
25
Zend/tests/bug40261.phpt
Executable file
25
Zend/tests/bug40261.phpt
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #40261 (Extremely slow data handling due to memory fragmentation)
|
||||||
|
--INI--
|
||||||
|
memory_limit=128M
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$num = 100000;
|
||||||
|
|
||||||
|
$a = Array();
|
||||||
|
for ($i=0; $i<$num; $i++) {
|
||||||
|
$a[$i] = Array(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i=0; $i<$num; $i++) {
|
||||||
|
$b[$i] = $a[$i][0];
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($a);
|
||||||
|
for ($i=0; $i<$num; $i++) {
|
||||||
|
$b[$i] = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
|
||||||
|
}
|
||||||
|
echo "ok\n";
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
ok
|
33
Zend/tests/bug40809.phpt
Executable file
33
Zend/tests/bug40809.phpt
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #40809 Poor perfomance of ".="
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
error_reporting(E_ALL|E_STRICT);
|
||||||
|
|
||||||
|
$num_increments = 100;
|
||||||
|
$num_repeats = 1000;
|
||||||
|
$increment = 50;
|
||||||
|
|
||||||
|
/* Create some more holes to give the memory allocator something to
|
||||||
|
* work with. */
|
||||||
|
$num = 5000;
|
||||||
|
$a = Array();
|
||||||
|
for ($i=0; $i<$num; $i++) {
|
||||||
|
$a[$i] = Array(1);
|
||||||
|
}
|
||||||
|
for ($i=0; $i<$num; $i++) {
|
||||||
|
$b[$i] = $a[$i][0];
|
||||||
|
}
|
||||||
|
unset($a);
|
||||||
|
|
||||||
|
for ($i=0;$i<$num_repeats;$i++) {
|
||||||
|
$evil = "";
|
||||||
|
for ($j=0;$j<$num_increments;$j++) {
|
||||||
|
$evil .= str_repeat("a", $increment);
|
||||||
|
}
|
||||||
|
unset($evil);
|
||||||
|
}
|
||||||
|
echo "ok\n";
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
ok
|
File diff suppressed because it is too large
Load diff
|
@ -228,8 +228,9 @@ struct _zend_mm_storage {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers, size_t block_size, void *params);
|
ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_mem_handlers *handlers, size_t block_size, size_t reserve_size, int internal, void *params);
|
||||||
ZEND_API zend_mm_heap *zend_mm_set_heap(zend_mm_heap *new_heap TSRMLS_DC);
|
ZEND_API zend_mm_heap *zend_mm_set_heap(zend_mm_heap *new_heap TSRMLS_DC);
|
||||||
|
ZEND_API zend_mm_storage *zend_mm_get_storage(zend_mm_heap *heap);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue