HEX
Server: Apache/2
System: Linux da.abacipark.com 4.18.0-553.34.1.el8_10.x86_64 #1 SMP Wed Jan 8 09:40:06 EST 2025 x86_64
User: ankarasy (1626)
PHP: 8.4.18
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/ankarasy/public_html/wp-content/plugins/zarinpal-mobile/includes/data-compressor.php
<?php
/**
 * Класс для сжатия данных перед отправкой
 * 
 * @package My_Monitoring_Plugin
 */

// Запрещаем прямой доступ к файлу
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Класс для сжатия данных
 */
class My_Monitoring_Data_Compressor {
    
    /**
     * Минимальный размер данных для сжатия (100KB)
     * 
     * @var int
     */
    const MIN_SIZE_FOR_COMPRESSION = 102400;
    
    /**
     * Сжать данные, если они достаточно большие
     * 
     * @param string $data JSON строка данных
     * @return array Массив с данными и информацией о сжатии
     */
    public static function compress_if_needed($data) {
        $data_size = strlen($data);
        $compressed = false;
        $compression_ratio = 1.0;
        
        // Сжимаем только если данные больше минимального размера
        if ($data_size > self::MIN_SIZE_FOR_COMPRESSION && function_exists('gzencode')) {
            $compressed_data = @gzencode($data, 6); // Уровень сжатия 6 (баланс скорости и размера)
            
            if ($compressed_data !== false) {
                $compressed_size = strlen($compressed_data);
                $compression_ratio = $compressed_size / $data_size;
                
                // Используем сжатие только если оно дает выигрыш более 10%
                if ($compression_ratio < 0.9) {
                    $data = $compressed_data;
                    $compressed = true;
                }
            }
        }
        
        return array(
            'data' => $data,
            'compressed' => $compressed,
            'original_size' => $data_size,
            'compressed_size' => $compressed ? strlen($data) : $data_size,
            'compression_ratio' => $compression_ratio,
        );
    }
    
    /**
     * Распаковать данные, если они сжаты
     * 
     * @param string $data Данные (возможно сжатые)
     * @param bool $is_compressed Флаг сжатия
     * @return string|false Распакованные данные или false при ошибке
     */
    public static function decompress_if_needed($data, $is_compressed) {
        if (!$is_compressed) {
            return $data;
        }
        
        if (!function_exists('gzdecode')) {
            return false;
        }
        
        $decompressed = @gzdecode($data);
        return $decompressed !== false ? $decompressed : false;
    }
}