WordPress.org

Make WordPress Core

Ticket #3141: 3141.r6601.diff

File 3141.r6601.diff, 3.8 KB (added by darkdragon, 6 years ago)

Tested patch against r6601

  • wp-includes/functions.php

     
    16761676                        trigger_error( printf( __("%s is <strong>deprecated</strong> since version %s with no alternative available."), $file, $version ) ); 
    16771677        } 
    16781678} 
     1679 
     1680/** 
     1681 * _set_memory_limit() - Try to set PHP memory limit to amount 
     1682 * 
     1683 * If the amount is not given, then the default is to set the amount 
     1684 * to '32MB', however the parameter available will allow setting the 
     1685 * amount to something other than '32MB'. 
     1686 * 
     1687 * Failure might mean that the memory limit is already higher than 
     1688 * either the default or the amount given. It could mean that ini_set 
     1689 * and/or ini_get has been disabled and either getting and/or setting 
     1690 * could not be accomplished. 
     1691 * 
     1692 * @since 2.5 
     1693 * @access private 
     1694 * 
     1695 * @param string $mib MiB amount as a string with MiB amount followed by 'M'. Default is 32M. 
     1696 * @return bool True if the amount was set by this function or already 32MB, false on failure. 
     1697 */ 
     1698function _set_memory_limit($mib='32M') { 
     1699        if( !function_exists('memory_get_usage') ) 
     1700                return null; 
     1701 
     1702        if( (int) @ini_get('memory_limit') < absint($mib) ) 
     1703                @ini_set('memory_limit', $mib); 
     1704 
     1705        if( @ini_get('memory_limit') == $mib ) 
     1706                return true; 
     1707 
     1708        return false; 
     1709} 
     1710 
     1711/** 
     1712 * wp_increase_memory_limit() - Increase PHP memory limit when needed 
     1713 * 
     1714 * This function can be applied to memory intensive loops to slowly increase 
     1715 * the memory when needed instead of just failing. 
     1716 * 
     1717 * Null return value means that the function to get the current memory 
     1718 * usage is unavailable. False return value can mean that the increase is 
     1719 * not needed at the moment or that the memory limit could not be increased. 
     1720 * 
     1721 * @todo Return WP_Error instead of false or instead apply this todo to 
     1722 *              the wp_set_memory_limit() function instead to return a WP_Error. 
     1723 * @since 2.5 
     1724 * 
     1725 * @return null|bool True on success. Null if can't increase memory 
     1726 */ 
     1727function wp_increase_memory_limit() { 
     1728        if( !function_exists('memory_get_usage') ) 
     1729                return null; 
     1730 
     1731        $iMemoryLimit = (int) @ini_get('memory_limit'); 
     1732        $iWhenIncrease = (int) $iMemoryLimit * 0.75; 
     1733 
     1734        $iCurrentUsage = memory_get_usage() / 1048576; // Divide by Megabytes 
     1735 
     1736        if( $iCurrentUsage >= $iWhenIncrease ) { 
     1737                $iIncreaseToAmount = ($iMemoryLimit+$iWhenIncrease).'MB'; 
     1738                return _set_memory_limit( $iIncreaseToAmount ); 
     1739        } 
     1740 
     1741        return false; 
     1742} 
     1743 
     1744/** 
     1745 * wp_get_memory_limit() - Return the PHP memory limit in MiB 
     1746 * 
     1747 * If null is returned, then --enable-memory-limit directive was 
     1748 * not enabled during PHP install (< 5.2.1). Prior to PHP 5.2.1 
     1749 * if --enable-memory-limit was not used during the install of 
     1750 * PHP, then memory_get_usage() would not exist in PHP. 
     1751 * 
     1752 * So Failure (false return value) might also mean that 
     1753 * memory_limit is unavailable on PHP version greater than PHP 
     1754 * 5.2.1. 
     1755 * 
     1756 * @todo Complete edge cases which have the memory limit set to something 
     1757 *              other than 'M'. The Memory limit can be an integer 
     1758 * 
     1759 * @since 2.5 
     1760 * 
     1761 * @return bool|int False if memory limit is not already in MiB or the MiB amount 
     1762 */ 
     1763function wp_get_memory_limit() { 
     1764        if( !function_exists('memory_get_usage') ) 
     1765                return null; 
     1766 
     1767        $iMemoryLimit = @ini_get('memory_limit'); 
     1768 
     1769        if( false !== stripos($iMemoryLimit, 'm') ) 
     1770                return absint($iMemoryLimit); 
     1771         
     1772        return false; 
     1773} 
     1774 
    16791775?> 
  • wp-settings.php

     
    194194require (ABSPATH . WPINC . '/functions.php'); 
    195195require (ABSPATH . WPINC . '/classes.php'); 
    196196 
     197if( defined('WP_MEMORY_LIMIT') ) 
     198        _set_memory_limit( WP_MEMORY_LIMIT ); 
     199else 
     200        _set_memory_limit(); 
     201 
    197202require_wp_db(); 
    198203 
    199204if ( !empty($wpdb->error) )