编辑: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; } }
保存文件
位置:
home
/
fembzvrs
/
zimeza.com
/
wp-content
/
plugins
/
litespeed-cache
/
src
批量上传
创建
创建
批量权限
批量删除
名称
权限
大小
修改时间
操作
↑ 返回上级
-
-
-
-
cdn
drwxr-xr-x
-
2026-05-12 00:07
权限
删除
重命名
data_structure
drwxr-xr-x
-
2026-05-12 00:07
权限
删除
重命名
activation.cls.php
-rw-r--r--
17.31 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
admin-display.cls.php
-rw-r--r--
48.47 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
admin-settings.cls.php
-rw-r--r--
11.12 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
avatar.cls.php
-rw-r--r--
8.65 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
base.cls.php
-rw-r--r--
37.66 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
cdn.cls.php
-rw-r--r--
15.92 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
cloud-auth-ip.trait.php
-rw-r--r--
4.33 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
cloud-misc.trait.php
-rw-r--r--
10.32 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
cloud-request.trait.php
-rw-r--r--
19.68 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
conf.cls.php
-rw-r--r--
19.53 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
control.cls.php
-rw-r--r--
24.35 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
core.cls.php
-rw-r--r--
20.97 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
crawler-map.cls.php
-rw-r--r--
19.41 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
crawler.cls.php
-rw-r--r--
44.72 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
data.upgrade.func.php
-rw-r--r--
5.72 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
db-optm.cls.php
-rw-r--r--
15.35 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
debug2.cls.php
-rw-r--r--
18.4 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
doc.cls.php
-rw-r--r--
5.45 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
esi.cls.php
-rw-r--r--
27.18 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
file.cls.php
-rw-r--r--
10.57 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
guest.cls.php
-rw-r--r--
2.75 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
gui.cls.php
-rw-r--r--
36.57 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
health.cls.php
-rw-r--r--
2.83 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
htaccess.cls.php
-rw-r--r--
29.81 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
img-optm-manage.trait.php
-rw-r--r--
30.85 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
img-optm-pull.trait.php
-rw-r--r--
22.1 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
img-optm-send.trait.php
-rw-r--r--
21.9 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
img-optm.cls.php
-rw-r--r--
5.26 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
import.cls.php
-rw-r--r--
4.29 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
import.preset.cls.php
-rw-r--r--
5.5 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
lang.cls.php
-rw-r--r--
17.02 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
localization.cls.php
-rw-r--r--
4.03 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
media.cls.php
-rw-r--r--
44.08 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
metabox.cls.php
-rw-r--r--
5.29 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
object-cache-wp.cls.php
-rw-r--r--
18.82 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
object-cache.cls.php
-rw-r--r--
20.95 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
placeholder.cls.php
-rw-r--r--
17.93 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
purge.cls.php
-rw-r--r--
34.41 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
report.cls.php
-rw-r--r--
6.12 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
rest.cls.php
-rw-r--r--
9.08 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
root.cls.php
-rw-r--r--
14.29 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
router.cls.php
-rw-r--r--
20.76 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
str.cls.php
-rw-r--r--
3.08 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
tag.cls.php
-rw-r--r--
9.26 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
task.cls.php
-rw-r--r--
7.05 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
tool.cls.php
-rw-r--r--
4.17 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
ucss.cls.php
-rw-r--r--
16.35 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
utility.cls.php
-rw-r--r--
26.01 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
vary.cls.php
-rw-r--r--
21.33 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名
vpi.cls.php
-rw-r--r--
9.38 KB
2026-04-01 20:54
编辑
下载
权限
删除
重命名