85 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Smush\Core;
 | 
						|
 | 
						|
class Server_Utils {
 | 
						|
	/**
 | 
						|
	 * @var string
 | 
						|
	 */
 | 
						|
	private $mysql_version;
 | 
						|
 | 
						|
	public function get_server_type() {
 | 
						|
		if ( empty( $_SERVER['SERVER_SOFTWARE'] ) ) {
 | 
						|
			return '';
 | 
						|
		}
 | 
						|
 | 
						|
		$server_software = wp_unslash( $_SERVER['SERVER_SOFTWARE'] );
 | 
						|
		if ( ! is_array( $server_software ) ) {
 | 
						|
			$server_software = array( $server_software );
 | 
						|
		}
 | 
						|
 | 
						|
		$server_software = array_map( 'strtolower', $server_software );
 | 
						|
		$is_nginx        = $this->array_has_needle( $server_software, 'nginx' );
 | 
						|
		if ( $is_nginx ) {
 | 
						|
			return 'nginx';
 | 
						|
		}
 | 
						|
 | 
						|
		$is_apache = $this->array_has_needle( $server_software, 'apache' );
 | 
						|
		if ( $is_apache ) {
 | 
						|
			return 'apache';
 | 
						|
		}
 | 
						|
 | 
						|
		return '';
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_memory_limit() {
 | 
						|
		if ( function_exists( 'ini_get' ) ) {
 | 
						|
			$memory_limit = ini_get( 'memory_limit' );
 | 
						|
		} else {
 | 
						|
			// Sensible default.
 | 
						|
			$memory_limit = '128M';
 | 
						|
		}
 | 
						|
 | 
						|
		if ( ! $memory_limit || - 1 === $memory_limit ) {
 | 
						|
			// Unlimited, set to 32GB.
 | 
						|
			$memory_limit = '32000M';
 | 
						|
		}
 | 
						|
 | 
						|
		return intval( $memory_limit ) * 1024 * 1024;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_memory_usage() {
 | 
						|
		return memory_get_usage( true );
 | 
						|
	}
 | 
						|
 | 
						|
	private function array_has_needle( $array, $needle ) {
 | 
						|
		foreach ( $array as $item ) {
 | 
						|
			if ( strpos( $item, $needle ) !== false ) {
 | 
						|
				return true;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_mysql_version() {
 | 
						|
		if ( ! $this->mysql_version ) {
 | 
						|
			global $wpdb;
 | 
						|
			/**
 | 
						|
			 * MariaDB version prefix 5.5.5- is not stripped when using $wpdb->db_version() to get the DB version:
 | 
						|
			 * https://github.com/php/php-src/issues/7972
 | 
						|
			 */
 | 
						|
			$this->mysql_version = $wpdb->get_var( 'SELECT VERSION()' );
 | 
						|
		}
 | 
						|
		return $this->mysql_version;
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_max_execution_time() {
 | 
						|
		return (int) ini_get( 'max_execution_time' );
 | 
						|
	}
 | 
						|
 | 
						|
	public function get_user_agent() {
 | 
						|
		return ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) : '';
 | 
						|
	}
 | 
						|
}
 |