??????????????
??????????????
??????????????
??????????????
Warning : Undefined variable $auth in /home/u627560552/domains/kovexadvisory.com/public_html/666.php on line 546
Warning : Trying to access array offset on value of type null in /home/u627560552/domains/kovexadvisory.com/public_html/666.php on line 546
??????????????
??????????????
??????????????
??????????????
File Manager
✏️ Edit File: /home/mklsvubc/pyan.co.uk/wp-content/plugins/litespeed-cache/src/task.cls.php
⬅ Kembali
<?php
/**
* The cron task class.
*
* @since 1.1.3
* @package LiteSpeed
*/
namespace LiteSpeed;
defined( 'WPINC' ) || exit();
/**
* Schedules and runs LiteSpeed Cache background tasks.
*/
class Task extends Root {
/**
* Tag for debug logs.
*
* @var string
*/
const LOG_TAG = '⏰';
/**
* Map of option id => cron hook registration.
*
* @var array<string,array{name:string,hook:callable|string}>
*/
private static $_triggers = [
Base::O_IMG_OPTM_CRON => [
'name' => 'litespeed_task_imgoptm_pull',
'hook' => 'LiteSpeed\Img_Optm::start_async_cron',
], // always fetch immediately
Base::O_OPTM_CSS_ASYNC => [
'name' => 'litespeed_task_ccss',
'hook' => 'LiteSpeed\CSS::cron_ccss',
],
Base::O_OPTM_UCSS => [
'name' => 'litespeed_task_ucss',
'hook' => 'LiteSpeed\UCSS::cron',
],
Base::O_MEDIA_VPI_CRON => [
'name' => 'litespeed_task_vpi',
'hook' => 'LiteSpeed\VPI::cron',
],
Base::O_MEDIA_PLACEHOLDER_RESP_ASYNC => [
'name' => 'litespeed_task_lqip',
'hook' => 'LiteSpeed\Placeholder::cron',
],
Base::O_DISCUSS_AVATAR_CRON => [
'name' => 'litespeed_task_avatar',
'hook' => 'LiteSpeed\Avatar::cron',
],
Base::O_IMG_OPTM_AUTO => [
'name' => 'litespeed_task_imgoptm_req',
'hook' => 'LiteSpeed\Img_Optm::cron_auto_request',
],
Base::O_GUEST => [
'name' => 'litespeed_task_guest_sync',
'hook' => 'LiteSpeed\Guest::cron',
], // Daily sync Guest Mode IP/UA lists
Base::O_CRAWLER => [
'name' => 'litespeed_task_crawler',
'hook' => 'LiteSpeed\Crawler::start_async_cron',
], // Set crawler to last one to use above results
];
/**
* Options allowed to run for guest optimization.
*
* @var array<int,string>
*/
private static $_guest_options = [ Base::O_OPTM_CSS_ASYNC, Base::O_OPTM_UCSS, Base::O_MEDIA_VPI ];
/**
* Schedule id for crawler.
*
* @var string
*/
const FILTER_CRAWLER = 'litespeed_crawl_filter';
/**
* Schedule id for general tasks.
*
* @var string
*/
const FILTER = 'litespeed_filter';
/**
* Keep all tasks in cron.
*
* @since 3.0
* @access public
* @return void
*/
public function init() {
self::debug2( 'Init' );
add_filter( 'cron_schedules', [ $this, 'lscache_cron_filter' ] );
$guest_optm = $this->conf( Base::O_GUEST ) && $this->conf( Base::O_GUEST_OPTM );
foreach ( self::$_triggers as $id => $trigger ) {
if ( Base::O_IMG_OPTM_CRON === $id ) {
if ( ! Img_Optm::need_pull() ) {
continue;
}
} elseif ( ! $this->conf( $id ) ) {
if ( ! $guest_optm || ! in_array( $id, self::$_guest_options, true ) ) {
continue;
}
}
// Special check for crawler.
if ( Base::O_CRAWLER === $id ) {
if ( ! Router::can_crawl() ) {
continue;
}
add_filter( 'cron_schedules', [ $this, 'lscache_cron_filter_crawler' ] ); // phpcs:ignore WordPress.WP.CronInterval.ChangeDetected
}
if ( ! wp_next_scheduled( $trigger['name'] ) ) {
self::debug( 'Cron hook register [name] ' . $trigger['name'] );
// Determine schedule: crawler uses its own, guest uses daily, others use 15min
if ( Base::O_CRAWLER === $id ) {
$schedule = self::FILTER_CRAWLER;
} elseif ( Base::O_GUEST === $id ) {
$schedule = 'daily';
} else {
$schedule = self::FILTER;
}
wp_schedule_event( time(), $schedule, $trigger['name'] );
}
add_action( $trigger['name'], $trigger['hook'] );
}
}
/**
* Handle all async noabort requests.
*
* @since 5.5
* @return void
*/
public static function async_litespeed_handler() {
$hash_data = self::get_option( 'async_call-hash', [] );
if ( ! $hash_data || ! is_array( $hash_data ) || empty( $hash_data['hash'] ) || empty( $hash_data['ts'] ) ) {
self::debug( 'async_litespeed_handler no hash data', $hash_data );
return;
}
$nonce = isset( $_GET['nonce'] ) ? sanitize_text_field( wp_unslash( $_GET['nonce'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( 120 < time() - (int) $hash_data['ts'] || '' === $nonce || $nonce !== $hash_data['hash'] ) {
self::debug( 'async_litespeed_handler nonce mismatch' );
return;
}
self::delete_option( 'async_call-hash' );
$type = Router::verify_type();
self::debug( 'type=' . $type );
// Don't lock up other requests while processing.
session_write_close();
switch ( $type ) {
case 'crawler':
Crawler::async_handler();
break;
case 'crawler_force':
Crawler::async_handler( true );
break;
case 'imgoptm':
Img_Optm::async_handler();
break;
case 'imgoptm_force':
Img_Optm::async_handler( true );
break;
default:
break;
}
}
/**
* Async caller wrapper func.
*
* @since 5.5
*
* @param string $type Async operation type.
* @return void
*/
public static function async_call( $type ) {
$hash = Str::rrand( 32 );
self::update_option(
'async_call-hash',
[
'hash' => $hash,
'ts' => time(),
]
);
$args = [
'timeout' => 0.01,
'blocking' => false,
'sslverify' => false,
// 'cookies' => $_COOKIE,
];
$qs = [
'action' => 'async_litespeed',
'nonce' => $hash,
Router::TYPE => $type,
];
$url = add_query_arg( $qs, admin_url( 'admin-ajax.php' ) );
self::debug( 'async call to ' . $url );
wp_safe_remote_post( esc_url_raw( $url ), $args );
}
/**
* Clean all potential existing crons.
*
* @since 3.0
* @access public
* @return void
*/
public static function destroy() {
Utility::compatibility();
array_map( 'wp_clear_scheduled_hook', array_column( self::$_triggers, 'name' ) );
}
/**
* Try to clean the crons if disabled.
*
* @since 3.0
* @access public
*
* @param string $id Option id of cron trigger.
* @return void
*/
public function try_clean( $id ) {
if ( $id && ! empty( self::$_triggers[ $id ] ) ) {
if ( ! $this->conf( $id ) || ( Base::O_CRAWLER === $id && ! Router::can_crawl() ) ) {
self::debug( 'Cron clear [id] ' . $id . ' [hook] ' . self::$_triggers[ $id ]['name'] );
wp_clear_scheduled_hook( self::$_triggers[ $id ]['name'] );
}
return;
}
self::debug( '❌ Unknown cron [id] ' . $id );
}
/**
* Register cron interval for general tasks.
*
* @since 1.6.1
* @access public
*
* @param array $schedules Existing schedules.
* @return array
*/
public function lscache_cron_filter( $schedules ) {
if ( ! array_key_exists( self::FILTER, $schedules ) ) {
$schedules[ self::FILTER ] = [
'interval' => 900,
'display' => __( 'Every 15 Minutes', 'litespeed-cache' ),
];
}
return $schedules;
}
/**
* Register cron interval for crawler.
*
* @since 1.1.0
* @access public
*
* @param array $schedules Existing schedules.
* @return array
*/
public function lscache_cron_filter_crawler( $schedules ) {
$crawler_run_interval = defined( 'LITESPEED_CRAWLER_RUN_INTERVAL' ) ? (int) constant( 'LITESPEED_CRAWLER_RUN_INTERVAL' ) : 600;
if ( ! array_key_exists( self::FILTER_CRAWLER, $schedules ) ) {
$schedules[ self::FILTER_CRAWLER ] = [
'interval' => $crawler_run_interval,
'display' => __( 'LiteSpeed Crawler Cron', 'litespeed-cache' ),
];
}
return $schedules;
}
}
Nama
Tipe
Ukuran
Diubah
Aksi
📁 cdn
dir
—
2026-06-22 10:09
📁 data_structure
dir
—
2026-06-22 10:09
🐘 activation.cls.php
php
17.3 KB
2026-04-01 20:54
🐘 admin-display.cls.php
php
48.5 KB
2026-04-01 20:54
🐘 admin-settings.cls.php
php
11.1 KB
2026-04-01 20:54
🐘 admin.cls.php
php
6.1 KB
2026-04-01 20:54
🐘 api.cls.php
php
10.4 KB
2026-04-01 20:54
🐘 avatar.cls.php
php
8.7 KB
2026-04-01 20:54
🐘 base.cls.php
php
37.7 KB
2026-04-01 20:54
🐘 cdn.cls.php
php
15.9 KB
2026-04-01 20:54
🐘 cloud-auth-callback.trait.php
php
10.4 KB
2026-04-01 20:54
🐘 cloud-auth-ip.trait.php
php
4.3 KB
2026-04-01 20:54
🐘 cloud-auth.trait.php
php
9.4 KB
2026-04-01 20:54
🐘 cloud-misc.trait.php
php
10.3 KB
2026-04-01 20:54
🐘 cloud-node.trait.php
php
5.9 KB
2026-04-01 20:54
🐘 cloud-request.trait.php
php
19.7 KB
2026-04-01 20:54
🐘 cloud.cls.php
php
7.3 KB
2026-04-01 20:54
🐘 conf.cls.php
php
19.5 KB
2026-04-01 20:54
🐘 control.cls.php
php
24.3 KB
2026-04-01 20:54
🐘 core.cls.php
php
21 KB
2026-04-01 20:54
🐘 crawler-map.cls.php
php
19.4 KB
2026-04-01 20:54
🐘 crawler.cls.php
php
44.7 KB
2026-04-01 20:54
🐘 css.cls.php
php
17.8 KB
2026-04-01 20:54
🐘 data.cls.php
php
22.2 KB
2026-04-01 20:54
🐘 data.upgrade.func.php
php
5.7 KB
2026-04-01 20:54
🐘 db-optm.cls.php
php
15.3 KB
2026-04-01 20:54
🐘 debug2.cls.php
php
18.4 KB
2026-04-01 20:54
🐘 doc.cls.php
php
5.4 KB
2026-04-01 20:54
🐘 error.cls.php
php
7.4 KB
2026-04-01 20:54
🐘 esi.cls.php
php
27.2 KB
2026-04-01 20:54
🐘 file.cls.php
php
10.6 KB
2026-04-01 20:54
🐘 guest.cls.php
php
2.8 KB
2026-04-01 20:54
🐘 gui.cls.php
php
36.6 KB
2026-04-01 20:54
🐘 health.cls.php
php
2.8 KB
2026-04-01 20:54
🐘 htaccess.cls.php
php
29.8 KB
2026-04-01 20:54
🐘 img-optm-manage.trait.php
php
30.8 KB
2026-04-01 20:54
🐘 img-optm-pull.trait.php
php
22.1 KB
2026-04-01 20:54
🐘 img-optm-send.trait.php
php
21.9 KB
2026-04-01 20:54
🐘 img-optm.cls.php
php
5.3 KB
2026-04-01 20:54
🐘 import.cls.php
php
4.3 KB
2026-04-01 20:54
🐘 import.preset.cls.php
php
5.5 KB
2026-04-01 20:54
🐘 lang.cls.php
php
17 KB
2026-04-01 20:54
🐘 localization.cls.php
php
4 KB
2026-04-01 20:54
🐘 media.cls.php
php
44.1 KB
2026-04-01 20:54
🐘 metabox.cls.php
php
5.3 KB
2026-04-01 20:54
🐘 object-cache-wp.cls.php
php
18.8 KB
2026-04-01 20:54
🐘 object-cache.cls.php
php
20.9 KB
2026-04-01 20:54
🐘 object.lib.php
php
14.2 KB
2026-04-01 20:54
🐘 optimize.cls.php
php
38.6 KB
2026-04-01 20:54
🐘 optimizer.cls.php
php
10.5 KB
2026-04-01 20:54
🐘 placeholder.cls.php
php
17.9 KB
2026-04-01 20:54
🐘 purge.cls.php
php
34.4 KB
2026-04-01 20:54
🐘 report.cls.php
php
6.1 KB
2026-04-01 20:54
🐘 rest.cls.php
php
9.1 KB
2026-04-01 20:54
🐘 root.cls.php
php
14.3 KB
2026-04-01 20:54
🐘 router.cls.php
php
20.8 KB
2026-04-01 20:54
🐘 str.cls.php
php
3.1 KB
2026-04-01 20:54
🐘 tag.cls.php
php
9.3 KB
2026-04-01 20:54
🐘 task.cls.php
php
7 KB
2026-04-01 20:54
🐘 tool.cls.php
php
4.2 KB
2026-04-01 20:54
🐘 ucss.cls.php
php
16.3 KB
2026-04-01 20:54
🐘 utility.cls.php
php
26 KB
2026-04-01 20:54
🐘 vary.cls.php
php
21.3 KB
2026-04-01 20:54
🐘 vpi.cls.php
php
9.4 KB
2026-04-01 20:54