136 Zeilen
		
	
	
	
		
			3,9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			136 Zeilen
		
	
	
	
		
			3,9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * This file is part of MySQLDumper released under the GNU/GPL 2 license
 | 
						|
 * http://www.mysqldumper.net
 | 
						|
 *
 | 
						|
 * @package         MySQLDumper
 | 
						|
 * @subpackage      Configuration
 | 
						|
 * @version         SVN: $Rev$
 | 
						|
 * @author          $Author$
 | 
						|
 */
 | 
						|
/**
 | 
						|
 * Helper for getting dynamic configuration values like phpRam etc.
 | 
						|
 *
 | 
						|
 * @package         MySQLDumper
 | 
						|
 * @subpackage      Configuration
 | 
						|
 */
 | 
						|
class Msd_ConfigurationPhpValues
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Read dynamic PHP config values
 | 
						|
     *
 | 
						|
     * @return Zend_Config
 | 
						|
     */
 | 
						|
    public static function getDynamicValues ()
 | 
						|
    {
 | 
						|
        $phpRam = self::_getPhpRam();
 | 
						|
        $dynConfig = array(
 | 
						|
            'sendmailCall' => self::_getConfigSetting('sendmail_path'),
 | 
						|
            'safeMode' => self::_getConfigSetting('safe_mode', true),
 | 
						|
            'magicQuotesGpc' => get_magic_quotes_gpc(),
 | 
						|
            'disabledPhpFunctions' =>
 | 
						|
                str_replace(
 | 
						|
                    ',',
 | 
						|
                    ', ',
 | 
						|
                    self::_getConfigSetting('disable_functions')
 | 
						|
                ),
 | 
						|
            'maxExecutionTime' => self::_getMaxExecutionTime(),
 | 
						|
            'uploadMaxFilesize' => self::_getUploadMaxFilesize(),
 | 
						|
            'phpextensions' => implode(', ', get_loaded_extensions()),
 | 
						|
            'phpRam' => $phpRam,
 | 
						|
            'memoryLimit' => round($phpRam * 1024 * 1024 * 0.9, 0),
 | 
						|
            'compression' => self::_hasZlib(),
 | 
						|
        );
 | 
						|
        return new Zend_Config($dynConfig, true);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Read PHP's max_execution_time
 | 
						|
     *
 | 
						|
     * @return int
 | 
						|
     */
 | 
						|
    private static function _getMaxExecutionTime()
 | 
						|
    {
 | 
						|
        $maxExecutionTime =
 | 
						|
            self::_getConfigSetting('max_execution_time', true);
 | 
						|
        if ($maxExecutionTime <= 5) {
 | 
						|
            // we didn't get the real value from the server - some deliver "-1"
 | 
						|
            $maxExecutionTime = 30;
 | 
						|
        } elseif ($maxExecutionTime > 30) {
 | 
						|
            // we don't use more than 30 seconds to avoid brower timeouts
 | 
						|
            $maxExecutionTime = 30;
 | 
						|
        }
 | 
						|
        return $maxExecutionTime;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get PHP's upload_max_filesize
 | 
						|
     *
 | 
						|
     * @return int
 | 
						|
     */
 | 
						|
    private static function _getUploadMaxFilesize()
 | 
						|
    {
 | 
						|
        $uploadMaxFilesize = self::_getConfigSetting('upload_max_filesize');
 | 
						|
        // Is value in Megabytes? If yes create output
 | 
						|
        if (strpos($uploadMaxFilesize, 'M')) {
 | 
						|
            $uploadMaxFilesize = str_replace('M', '', $uploadMaxFilesize);
 | 
						|
            $uploadMaxFilesize = trim($uploadMaxFilesize);
 | 
						|
            // re-calculate to Bytes
 | 
						|
           $uploadMaxFilesize *= 1024 * 1024;
 | 
						|
        }
 | 
						|
        return (int) $uploadMaxFilesize;;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get PHP's ram size
 | 
						|
     *
 | 
						|
     * @return integer The memory limit in MB
 | 
						|
     */
 | 
						|
    private static function _getPhpRam()
 | 
						|
    {
 | 
						|
        $ram = self::_getConfigSetting('memory_limit');
 | 
						|
        // we don't trust the value delivered by server config if < 16
 | 
						|
        if ($ram < 16) {
 | 
						|
            $ram = 16;
 | 
						|
        }
 | 
						|
        return $ram;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Detect if zlib is installed
 | 
						|
     *
 | 
						|
     * @return boolean
 | 
						|
     */
 | 
						|
    private static function _hasZlib()
 | 
						|
    {
 | 
						|
        $zlib = false;
 | 
						|
        $extensions = get_loaded_extensions();
 | 
						|
        if (in_array('zlib', $extensions)) {
 | 
						|
            $zlib = true;
 | 
						|
        };
 | 
						|
        return (boolean) $zlib;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns a PHP-Setting from ini
 | 
						|
     *
 | 
						|
     * First try to read via ini_get(), then fall back to get_cfg_var()
 | 
						|
     *
 | 
						|
     * @param string  $varName     The name of the setting to read
 | 
						|
     * @param boolean $returnAsInt Whether to return value as integer
 | 
						|
     */
 | 
						|
    private function _getConfigSetting($varName, $returnAsInt = false)
 | 
						|
    {
 | 
						|
        $value = @ini_get($varName);
 | 
						|
 | 
						|
        // fallback if ini_get doesn't work
 | 
						|
        if ($value == '' || $value === null) {
 | 
						|
            $value = @get_cfg_var($varName);
 | 
						|
        }
 | 
						|
 | 
						|
        if ($returnAsInt) {
 | 
						|
            $value = (int) $value;
 | 
						|
        }
 | 
						|
        return $value;
 | 
						|
    }
 | 
						|
}
 |