🔎

Правильне переміщення файлу в PHP

Як правильно виконати переміщення файлу на мові програмування PHP?
php
1 відповідь
  • Дмитро
    Для переміщення файлу в 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.