# WP_TEMPNAM() │ WP 2.6.0
Функция WP_TEMPNAM()
создает название уникального временного файла. Учтите, что функция, которая вызывает WP_TEMPNAM()
, должна сама удалить или переместить этот файл.
## Примечание
Согласно документации, вызывающая функция должна удалить или переместить созданный файл.
Имя файла основывается на переданном параметре, или, если он не задан, использует текущую метку времени в формате UNIX. Директорию также можно передать в качестве параметра, а если оставить её пустой, по умолчанию будет использоваться доступная временная директория.
### Используется в:
Функция download_url()
**Время выполнения:**
- 1 раз — 0.000405 сек (быстро)
- 50,000 раз — 5.08 сек (быстро)
**Версия PHP:** 7.1.11, **Версия WP:** 4.9.5
**Хуки:** Нет.
## Возвращает
Строку — доступное имя файла.
## Использование
Функция вызывается так:
```php
wp_tempnam( $filename, $dir );
$filename
(string): Имя файла, на основе которого будет создан уникальный файл. По умолчанию: ''
$dir
(string): Директория для хранения файла. По умолчанию: ''
Примеры
Пример 1
require_once ABSPATH . 'wp-admin/includes/file.php';
$filename = wp_tempnam(); //> /tmp/1524879129-OkwJkv.tmp
// модифицируем файл и делаем с ним что-то
unlink( $filename ); // удаляем файл
Примеры использования с параметрами
$filename = wp_tempnam( 'my_log_file' ); //> /tmp/my_log_file-BmwSQw.tmp
unlink( $filename );
$filename = wp_tempnam( 'my_log_file.log' ); //> /tmp/my_log_file-AreTYU.tmp
unlink( $filename );
$filename = wp_tempnam( '', $_SERVER['DOCUMENT_ROOT'].'/' ); //> /home/example.com/public_html/1524879213-ieQsRX.tmp
unlink( $filename );
Изменения
- С версии 2.6.0 — функция введена в использование.
Исходный код функции WP_TEMPNAM
function wp_tempnam( $filename = '', $dir = '' ) {
if ( empty( $dir ) ) {
$dir = get_temp_dir();
}
if ( empty( $filename ) || in_array( $filename, array( '.', '/', '' ), true ) ) {
$filename = uniqid();
}
$temp_filename = basename( $filename );
$temp_filename = preg_replace( '|.[^.]*$|', '', $temp_filename );
if ( ! $temp_filename ) {
return wp_tempnam( dirname( $filename ), $dir );
}
$temp_filename .= '-' . wp_generate_password( 6, false );
$temp_filename .= '.tmp';
$temp_filename = wp_unique_filename( $dir, $temp_filename );
$characters_over_limit = strlen( $temp_filename ) - 252;
if ( $characters_over_limit > 0 ) {
$filename = substr( $filename, 0, -$characters_over_limit );
return wp_tempnam( $filename, $dir );
}
$temp_filename = $dir . $temp_filename;
$fp = @fopen( $temp_filename, 'x' );
if ( ! $fp && is_writable( $dir ) && file_exists( $temp_filename ) ) {
return wp_tempnam( $filename, $dir );
}
if ( $fp ) {
fclose( $fp );
}
return $temp_filename;
}
В данном коде мы создаем временное имя файла, обеспечивая его уникальность, добавляя случайные символы к имени. Это помогает избежать конфликтов имен файлов в одной и той же директории.