Учитывая простой код вроде:
$file = 'hugefile.jpg';
$bckp_file = 'hugeimage-backup.jpg';
// here comes some manipulation on $bckp_file.
Предполагаемая проблема заключается в том, что если файл большой или большой, скажем, в формате jpg, можно подумать, что его копирование займет некоторое время на сервере (я имею в виду даже несколько миллисекунд) - но одна также предположил бы, что выполнение следующей строки будет намного быстрее ..
Таким образом, теоретически - я мог бы получить ошибку «нет такого файла или каталога» при попытке манипулировать файлом, который еще не создан - или, что еще хуже, - начать манипулировать файлом TRUNCATED .
Мой вопрос: как я могу убедиться, что $ bckp_file был успешно создан (или в данном случае скопирован) перед следующей строкой, которая им манипулирует?
Какие есть варианты «приостановить», «задержать» выполнение следующей строки до завершения создания / копирования файла?
сейчас я могу думать только о чем-то вроде
if (!copy($file, $bckp_file)) {
echo "failed to copy $file...\n";
}
, который только предупредит меня, но ничего не решит (так же, как и ошибка php)
или
if (copy($file, $bckp_file)) {
// move the manipulation to here ..
}
Но это также не так верно - потому что, допустим, копия не была выполнена - я просто выйду из цикла, не достигнув своей цели и без ошибок.
Это вообще проблема или я слишком обдумываю это?
Или PHP имеет встроенный механизм для обеспечения этого?
Любые рекомендуемые практики?
есть мысли по этому поводу? ??