Я использую WinSCP для непрерывного извлечения файлов CSV с удаленного FTP.
Я создал PHP-скрипт, который сканирует папку каждые 10 минут, чтобы импортировать эти CSV-файлы в базу данных с помощью LOAD DATA INFILE
Проблема в том, что мой PHP-скрипт выполняет LOAD DATA INFILE
, даже если файл все еще загружается WinSCP (некоторые файлы имеют размер от 1 до 2 ГБ, поэтому иногда это занимает много времени)
Поэтому я хотел бы добавить условие перед LOAD DATA INFILE
, чтобы проверить, заблокирован ли файл CSV для изменения другим пользователем (это то, что сообщает мне Excel, когда я пытаюсь открыть его вручную)
Я пробовал несколько вещей:
is_file($file_path)
boolean true
is_writable($file_path)
boolean true
is_readable($file_path)
boolean true
file_exists($file_path)
boolean true
Когда я использую fopen, он возвращает мне false
fopen($file_path, "r+")
boolean false
Но у меня есть исключение, и я не знаю, не снизит ли производительность скрипта открытие 2-гигабайтных файлов перед каждым LOAD DATA INFILE
Warning: fopen(***\booking.csv): failed to open stream: Resource temporarily unavailable in ***\load.php on line 62