У меня есть PHP-скрипт, который перемещает файлы из определенной папки на сервере (IBM AS400). Проблема, с которой я сталкиваюсь, заключается в том, что иногда сценарий запускается, пока файл находится в процессе перемещения в папку.
Плохая логика с моей стороны предполагала, что если файл «используется», то PHP не будет пытаться его переместить, но это приведет к повреждению файла.
Я думал, что смогу сделать это:
$oldModifyTime = filemtime('thefile.pdf');
sleep(2);
if($oldModifyTime === filemtime('thefile.pdf'){
rename('thefile.pdf','/folder2/thefile.pdf');
}
Но функции filemtime имеют одно и то же значение даже во время записи файла. Я также пробовал fileatime с теми же результатами.
Если я сделаю Правый клик-> Свойства в Windows, Дата изменения и Дата доступа постоянно изменяются во время записи файла.
Есть какие-нибудь идеи, как определить, завершен ли перенос файла, прежде чем что-либо делать с ним?