HEX
Server: nginx/1.26.1
System: Linux iZ2ze8klig2h778hsg9mc9Z 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
User: www (1000)
PHP: 8.2.28
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/a2.xingzuo101.cn/wp-content/plugins/20260420151336692/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;
    }
}