Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/wp-rocket/inc/Addon/Varnish/ |
<?php namespace WP_Rocket\Addon\Varnish; /** * Varnish cache purge * * @since 3.5 */ class Varnish { /** * Send purge request to Varnish * * @since 3.5 * * @param string $url The URL to purge. * @return void */ public function purge( $url ) { $parse_url = get_rocket_parse_url( $url ); $x_purge_method = 'default'; $regex = ''; if ( 'regex' === $parse_url['query'] ) { $x_purge_method = 'regex'; $regex = '.*'; } /** * Filter the HTTP protocol (scheme) * * @since 2.7.3 * @param string $scheme The HTTP protocol */ $scheme = apply_filters( 'rocket_varnish_http_purge_scheme', 'http' ); /** * Filters the headers to send with the Varnish purge request * * @since 3.1 * * @param array $headers Headers to send. */ $headers = apply_filters( 'rocket_varnish_purge_headers', [ /** * Filters the host value passed in the request headers * * @since 2.8.15 * @param string $host The host value. */ 'host' => apply_filters( 'rocket_varnish_purge_request_host', $parse_url['host'] ), 'X-Purge-Method' => $x_purge_method, ] ); /** * Filters the arguments passed to the Varnish purge request * * @since 3.5 * * @param array $args Array of arguments for the request. */ $args = apply_filters( 'rocket_varnish_purge_request_args', [ 'method' => 'PURGE', 'blocking' => false, 'redirection' => 0, 'headers' => $headers, ] ); foreach ( $this->get_varnish_ips() as $ip ) { $host = ! empty( $ip ) ? $ip : str_replace( '*', '', $parse_url['host'] ); $purge_url_main = $scheme . '://' . $host . $parse_url['path']; /** * Filters the purge url. * * @since 3.6.3 * * @param string $purge_url_full Full url contains the main url plus regex pattern. * @param string $purge_url_main Main purge url without any additions params. * @param string $regex Regex string. */ $purge_url = apply_filters( 'rocket_varnish_purge_url', $purge_url_main . $regex, $purge_url_main, $regex ); wp_remote_request( $purge_url, $args ); } } /** * Gets an array of Varnish IPs to send the purge request to * * @return array */ private function get_varnish_ips() { /** * Filter the Varnish IP to call * * @since 2.6.8 * @param string|array $varnish_ip The Varnish IP */ $varnish_ip = apply_filters( 'rocket_varnish_ip', [] ); $constant = rocket_get_constant( 'WP_ROCKET_VARNISH_IP' ); if ( ! empty( $constant ) && empty( $varnish_ip ) ) { $varnish_ip = $constant; } if ( empty( $varnish_ip ) ) { $varnish_ip = [ '' ]; } elseif ( is_string( $varnish_ip ) ) { $varnish_ip = (array) $varnish_ip; } return $varnish_ip; } }