Changeset 48160
- Timestamp:
- 06/25/2020 07:13:22 AM (4 years ago)
- Location:
- trunk/src/wp-admin/includes
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/class-core-upgrader.php
r47808 r48160 162 162 $wp_filesystem->chmod( $wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE ); 163 163 164 wp_opcache_invalidate( ABSPATH . 'wp-admin/includes/update-core.php' ); 164 165 require_once ABSPATH . 'wp-admin/includes/update-core.php'; 165 166 -
trunk/src/wp-admin/includes/file.php
r48115 r48160 499 499 return new WP_Error( 'unable_to_write', __( 'Unable to write to file.' ) ); 500 500 } 501 if ( 'php' === $extension && function_exists( 'opcache_invalidate' ) ) { 502 opcache_invalidate( $real_file, true ); 503 } 501 wp_opcache_invalidate( $real_file, true ); 504 502 505 503 if ( $is_active && 'php' === $extension ) { … … 609 607 // Roll-back file change. 610 608 file_put_contents( $real_file, $previous_content ); 611 if ( function_exists( 'opcache_invalidate' ) ) { 612 opcache_invalidate( $real_file, true ); 613 } 609 wp_opcache_invalidate( $real_file, true ); 614 610 615 611 if ( ! isset( $result['message'] ) ) { … … 1744 1740 } 1745 1741 } 1742 wp_opcache_invalidate( $to . $filename ); 1746 1743 } elseif ( 'd' === $fileinfo['type'] ) { 1747 1744 if ( ! $wp_filesystem->is_dir( $to . $filename ) ) { … … 2278 2275 <?php 2279 2276 } 2277 2278 /** 2279 * Attempt to clear the opcode cache for an individual PHP file. 2280 * 2281 * This function can be called safely without having to check the file extension 2282 * or availability of the OPcache extension. 2283 * 2284 * Whether or not invalidation is possible is cached to improve performance. 2285 * 2286 * @since 5.5 2287 * 2288 * @link https://www.php.net/manual/en/function.opcache-invalidate.php 2289 * 2290 * @param string $filepath Path to the file, including extension, for which the opcode cache is to be cleared. 2291 * @param bool $force Invalidate even if the modification time is not newer than the file in cache. Default `false`. 2292 * 2293 * @return bool `true` if opcache was invalidated for `$filepath`, or there was nothing to invalidate. 2294 * `false` if opcache invalidation is not available, or is disabled via filter. 2295 */ 2296 function wp_opcache_invalidate( $filepath, $force = false ) { 2297 static $can_invalidate = null; 2298 2299 /* 2300 * Check to see if WordPress is able to run `opcache_invalidate()` or not, and cache the value. 2301 * 2302 * First, check to see if the function is available to call, then if the host has restricted 2303 * the ability to run the function to avoid a PHP warning. 2304 * 2305 * `opcache.restrict_api` can specify the path for files allowed to call `opcache_invalidate()`. 2306 * 2307 * If the host has this set, check whether the path in `opcache.restrict_api` matches 2308 * the beginning of the path of the origin file. 2309 * 2310 * `$_SERVER['SCRIPT_FILENAME']` approximates the origin file's path, but 2311 * `realpath()` is necessary because `SCRIPT_FILENAME` can be a relative path 2312 * when run from CLI. 2313 * 2314 * For more details, see: 2315 * - https://www.php.net/manual/en/opcache.configuration.php 2316 * - https://www.php.net/manual/en/reserved.variables.server.php 2317 * - https://core.trac.wordpress.org/ticket/36455 2318 */ 2319 if ( $can_invalidate === null ) { 2320 $can_invalidate = function_exists( 'opcache_invalidate' ) && 2321 ( ! ini_get( 'opcache.restrict_api' ) || 2322 stripos( realpath( $_SERVER['SCRIPT_FILENAME'] ), ini_get( 'opcache.restrict_api' ) ) === 0 ); 2323 } 2324 2325 // If invalidation is not available, return early. 2326 if ( ! $can_invalidate ) { 2327 return false; 2328 } 2329 2330 // Verify that file to be invalidated has a PHP extension. 2331 if ( ! preg_match( '/\.(?:php)$/i', $filepath ) ) { 2332 return false; 2333 } 2334 2335 /** 2336 * Filters whether to invalidate a file from the opcode cache. 2337 * 2338 * @since 5.5 2339 * 2340 * @param bool $will_invalidate Whether WordPress will invalidate `$filename`. Default `true`. 2341 * @param string $filename The PHP filename to invalidate. 2342 */ 2343 if ( apply_filters( 'wp_opcache_invalidate_file', true, $filepath ) ) { 2344 return opcache_invalidate( $filepath, $force ); 2345 } 2346 2347 return false; 2348 } -
trunk/src/wp-admin/includes/update-core.php
r48067 r48160 1319 1319 * Assumes that WP_Filesystem() has already been called and setup. 1320 1320 * 1321 * This is a temporary function for the 3.1 -> 3.2 upgrade, as well as for those 1322 * upgrading to 3.7+. 1321 * This is a standalone copy of the `copy_dir()` function that is used to 1322 * upgrade the core files. It is placed here so that the version of this 1323 * function from the *new* WordPress version will be called. 1324 * 1325 * It was initially added for the 3.1 -> 3.2 upgrade. 1323 1326 * 1324 1327 * @ignore … … 1327 1330 * 1328 1331 * @see copy_dir() 1332 * @link https://core.trac.wordpress.org/ticket/17173 1329 1333 * 1330 1334 * @global WP_Filesystem_Base $wp_filesystem … … 1355 1359 return new WP_Error( 'copy_failed__copy_dir', __( 'Could not copy file.' ), $to . $filename ); 1356 1360 } 1361 } 1362 1363 // `wp_opcache_invalidate()` only exists in WordPress 5.5, so don't run it when upgrading to 5.5. 1364 if ( function_exists( 'wp_opcache_invalidate' ) ) { 1365 wp_opcache_invalidate( $to . $filename ); 1357 1366 } 1358 1367 } elseif ( 'd' === $fileinfo['type'] ) {
Note: See TracChangeset
for help on using the changeset viewer.