ProfiPHPProfiPHP
Категория: Полезное в PHP

Правильное перемещение файла в PHP

Для перемещения файла в PHP можно воспользоваться как минимум двумя способами. Первый из них, это использование функции Rename:
rename( $_SERVER['DOCUMENT_ROOT'].'/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/folder/archive .zip');
Второй вариант также заслуживает внимания. Перемещение файла осуществляется копированием файла функцией Copy, а затем удаление оригинала функцией Unlink. Делается все это так:
copy( $_SERVER['DOCUMENT_ROOT'].'/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip' );
unlink( $_SERVER['DOCUMENT_ROOT'].'/archive.zip' );
Поскольку основной задачей функции Rename является переименование файла, многие начинающие программисты используют второй вариант. Давайте разберем, какой вариант работает быстрее. Для этого выполним следующий код:
$start = microtime( true );
for ( $i = 1; $i < 100; $i++ ) {
rename( $_SERVER['DOCUMENT_ROOT'].'/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip' );
rename( $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/archive.zip' );
}
echo round( microtime( true ) - $start, 4 );
Данный скрипт перезаписывает файл 100 раз, и выполняет это за 0.0024 секунды.

Теперь сравним второй вариант:
$start = microtime( true );
for ( $i = 1; $i < 100; $i++ ) {
copy( $_SERVER['DOCUMENT_ROOT'].'/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip' );
unlink( $_SERVER['DOCUMENT_ROOT'].'/archive.zip' );

copy( $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip', $_SERVER['DOCUMENT_ROOT'].'/archive.zip' );
unlink( $_SERVER['DOCUMENT_ROOT'].'/folder/archive.zip' );
}
echo round( microtime( true ) - $start, 4 );
Результаты превзошли все ожидания, скрипт исполнился за 0.032 секунды.

Теперь однозначно можно сделать вывод, для перемещения файла нужно использовать функцию Rename.

Добавить комментарий

Имя:
Текст комментария: