Plugin Directory

Changeset 3461166


Ignore:
Timestamp:
02/14/2026 03:16:00 AM (6 weeks ago)
Author:
loghin
Message:

1.2.998.1

Location:
dynamic-front-end-heartbeat-control/tags/1.2.998.1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • dynamic-front-end-heartbeat-control/tags/1.2.998.1/heartbeat-controller.php

    r3461136 r3461166  
    8585});
    8686
     87function dfehc_get_recommended_interval_for_load(float $load, float $response_time = 0.0): float
     88{
     89    $last_key = dfehc_scoped_tkey('dfehc_last_user_activity');
     90    $last_activity = (int) get_transient($last_key);
     91    $elapsed = $last_activity > 0 ? max(0.0, (float) (time() - $last_activity)) : 0.0;
     92
     93    return (float) dfehc_calculate_recommended_interval($elapsed, $load, $response_time);
     94}
     95
    8796function dfehc_enqueue_scripts(): void
    8897{
     
    93102    wp_enqueue_script('heartbeat');
    94103
    95     $site_key = function_exists('dfehc_scoped_key') ? (string) dfehc_scoped_key('site') : (string) wp_parse_url(home_url(), PHP_URL_HOST);
     104    $site_key = function_exists('dfehc_scoped_key')
     105        ? (string) dfehc_scoped_key('site')
     106        : (string) wp_parse_url(home_url(), PHP_URL_HOST);
    96107    $site_key = $site_key ?: (string) wp_parse_url(home_url(), PHP_URL_HOST);
    97108    $site_key = $site_key ?: 'site';
    98109
    99110    $ver = defined('DFEHC_VERSION') ? (string) DFEHC_VERSION : (string) filemtime(__FILE__);
    100     $cache_duration_ms = (int) apply_filters('dfehc_js_cache_duration_ms', 10 * 60 * 1000);
     111
     112    $cache_duration_ms = (int) apply_filters('dfehc_js_cache_duration_ms', 10 * 60 * 1000);
    101113    $cache_duration_ms = max(15000, min(60 * 60 * 1000, $cache_duration_ms));
    102114
     
    108120    $leader_ttl_ms  = max(2000, min(20000, $leader_ttl_ms));
    109121    $leader_beat_ms = max(800, min(10000, $leader_beat_ms));
     122
    110123    $load = function_exists('dfehc_get_server_load') ? dfehc_get_server_load() : null;
    111124    if ($load === false || $load === null) {
    112     $load = (float) DFEHC_MAX_SERVER_LOAD;
     125        $load = (float) DFEHC_MAX_SERVER_LOAD;
    113126    }
    114127    $load = (float) $load;
    115128
    116     $recommended = function_exists('dfehc_calculate_recommended_interval_user_activity')
    117     ? dfehc_calculate_recommended_interval_user_activity($load, DFEHC_BATCH_SIZE)
    118     : 60.0;
     129    $rt_seconds = 0.0;
     130    if (function_exists('dfehc_get_server_response_time')) {
     131        $rt = dfehc_get_server_response_time();
     132
     133        if (is_numeric($rt)) {
     134            $rt_seconds = (float) $rt;
     135        } elseif (is_array($rt)) {
     136            if (isset($rt['main_response_ms']) && is_numeric($rt['main_response_ms'])) {
     137                $rt_seconds = ((float) $rt['main_response_ms']) / 1000.0;
     138            } elseif (isset($rt['response_ms']) && is_numeric($rt['response_ms'])) {
     139                $rt_seconds = ((float) $rt['response_ms']) / 1000.0;
     140            } elseif (isset($rt['response_time']) && is_numeric($rt['response_time'])) {
     141                $rt_seconds = (float) $rt['response_time'];
     142            }
     143        } elseif (is_object($rt)) {
     144            $arr = (array) $rt;
     145            if (isset($arr['main_response_ms']) && is_numeric($arr['main_response_ms'])) {
     146                $rt_seconds = ((float) $arr['main_response_ms']) / 1000.0;
     147            } elseif (isset($arr['response_ms']) && is_numeric($arr['response_ms'])) {
     148                $rt_seconds = ((float) $arr['response_ms']) / 1000.0;
     149            } elseif (isset($arr['response_time']) && is_numeric($arr['response_time'])) {
     150                $rt_seconds = (float) $arr['response_time'];
     151            }
     152        }
     153
     154        $rt_seconds = max(0.0, $rt_seconds);
     155    }
     156
     157    $recommended = 60.0;
     158
     159    if (function_exists('dfehc_get_recommended_interval_for_load')) {
     160        $recommended = (float) dfehc_get_recommended_interval_for_load($load, (float) $rt_seconds);
     161    } elseif (function_exists('dfehc_calculate_recommended_interval')) {
     162        $last_key = function_exists('dfehc_scoped_key') ? dfehc_scoped_key('dfehc_last_user_activity') : 'dfehc_last_user_activity';
     163        $last = function_exists('get_transient') ? (int) get_transient($last_key) : 0;
     164        $elapsed = $last > 0 ? max(0.0, (float) (time() - $last)) : 0.0;
     165
     166        $recommended = (float) dfehc_calculate_recommended_interval($elapsed, $load, (float) $rt_seconds);
     167    } elseif (function_exists('dfehc_calculate_recommended_interval_user_activity')) {
     168        $recommended = (float) dfehc_calculate_recommended_interval_user_activity($load, DFEHC_BATCH_SIZE);
     169    }
     170
    119171    wp_localize_script(
    120172        'heartbeat',
     
    125177            'nonce'                     => wp_create_nonce(DFEHC_NONCE_ACTION),
    126178            'ver'                       => $ver,
    127             'cache_bypass_rate'         => 0.05,
     179            'cache_bypass_rate'         => (float) $cache_bypass_rate,
    128180        )
    129181    );
  • dynamic-front-end-heartbeat-control/tags/1.2.998.1/widget.php

    r3461136 r3461166  
    7171    }
    7272
    73     $recommended_interval = dfehc_calculate_recommended_interval_user_activity($server_load);
     73$recommended_interval = dfehc_get_recommended_interval_for_load((float) $server_load);
    7474
    7575    $load_logs = get_option('dfehc_server_load_logs', []);
     
    667667    $server_load = dfehc_get_server_load();
    668668    $server_response_time = dfehc_get_server_response_time();
    669     $recommended_interval = dfehc_calculate_recommended_interval_user_activity($server_load);
     669$recommended_interval = dfehc_get_recommended_interval_for_load((float) $server_load, (float) $response_seconds);
    670670
    671671    $response_seconds = 0.0;
Note: See TracChangeset for help on using the changeset viewer.