$86 GRAYBYTE WORDPRESS FILE MANAGER $46

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/home/bravrvjk/kigalix.com/wp-content/plugins/litespeed-cache/src/

HOME
Current File : /home/bravrvjk/kigalix.com/wp-content/plugins/litespeed-cache/src//task.cls.php
<?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;
	}
}


Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0755
cdn
--
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0755
data_structure
--
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0755
activation.cls.php
17.338 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
admin-display.cls.php
48.469 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
admin-settings.cls.php
11.116 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
admin.cls.php
5.037 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
api.cls.php
10.363 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
avatar.cls.php
8.652 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
base.cls.php
34.457 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
cdn.cls.php
15.918 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
cloud.cls.php
65.907 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
conf.cls.php
19.53 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
control.cls.php
24.349 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
core.cls.php
20.971 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
crawler-map.cls.php
19.408 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
crawler.cls.php
44.736 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
css.cls.php
17.693 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
data.cls.php
22.205 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
data.upgrade.func.php
5.719 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
db-optm.cls.php
15.349 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
debug2.cls.php
17.051 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
doc.cls.php
5.446 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
error.cls.php
7.354 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
esi.cls.php
27.182 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
file.cls.php
10.569 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
guest.cls.php
2.755 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
gui.cls.php
36.573 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
health.cls.php
2.831 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
htaccess.cls.php
24.002 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
import.cls.php
4.292 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
import.preset.cls.php
5.501 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
lang.cls.php
17.106 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
localization.cls.php
3.439 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
media.cls.php
40.266 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
metabox.cls.php
5.292 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
object-cache-wp.cls.php
24.618 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
object-cache.cls.php
20.262 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
object.lib.php
13.31 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
optimize.cls.php
38.845 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
optimizer.cls.php
9.414 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
placeholder.cls.php
17.955 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
purge.cls.php
34.409 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
report.cls.php
6.119 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
rest.cls.php
9.083 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
root.cls.php
14.607 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
router.cls.php
20.663 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
str.cls.php
3.082 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
tag.cls.php
9.259 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
task.cls.php
7.05 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
tool.cls.php
4.168 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
ucss.cls.php
16.267 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
utility.cls.php
24.382 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
vary.cls.php
21.33 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644
vpi.cls.php
9.375 KB
22 Jan 2026 9.08 PM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF