From 968b3fc5a4aa9871ce8654b48502f8710fc804a1 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 10 Feb 2022 15:01:06 +0000 Subject: [PATCH] Code Modernization: Use `file_get_contents()` in `get_file_data()`. `file_get_contents()` is faster than `fread()`, because the PHP core can decide how to best read the remaining file; it could decide to issue just one `read()` call or `mmap()` the file first. Per the PHP manual, `file_get_contents()` or `stream_get_contents()` is the preferred way to read the contents of a file into a string. It will use memory mapping techniques if supported by the OS to enhance performance. Reference: [https://www.php.net/manual/en/function.file-get-contents.php PHP Manual: file_get_contents()]. Follow-up to [12044], [49073], [52696]. Props maxkellermann. See #55069. git-svn-id: https://develop.svn.wordpress.org/trunk@52698 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/functions.php | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 539194642d..24cfbb7b33 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -6566,16 +6566,10 @@ function wp_scheduled_delete() { * @return string[] Array of file header values keyed by header name. */ function get_file_data( $file, $default_headers, $context = '' ) { - // We don't need to write to the file, so just open for reading. - $fp = fopen( $file, 'r' ); + // Pull only the first 8 KB of the file in. + $file_data = file_get_contents( $file, false, null, 0, 8 * KB_IN_BYTES ); - if ( $fp ) { - // Pull only the first 8 KB of the file in. - $file_data = fread( $fp, 8 * KB_IN_BYTES ); - - // PHP will close file handle, but we are good citizens. - fclose( $fp ); - } else { + if ( false === $file_data ) { $file_data = ''; }