Сохранение временной метки измененного файла при использовании ftp_put для загрузки на удаленный сервер - PullRequest
1 голос
/ 05 мая 2020

У меня есть сценарий php, который загружает файлы из одной папки на удаленный ftp-сервер. Он отлично работает, загружая файлы на удаленный сервер. Подключение в порядке.

Однако временные метки измененных файлов для загруженных файлов всегда являются временем их передачи на удаленный сервер. Есть ли способ сохранить измененное время, когда я использую ftp_put для загрузки на удаленный сервер? Или мне нужен другой подход?

Ниже приведен код. Соединение в порядке, ftp_put выполняет свою работу.

foreach (glob("$path/Content/*.*") as $filename) {
    $contentupstate = ftp_put($connection, "Content/". basename($filename) , $filename, FTP_BINARY); 
};

Просто хотел проверить, возможно ли это, или нам нужно что-то сделать на удаленном сервере. Спасибо всем, кто поможет.

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Спасибо AbraCadaver за подсказку. После некоторого тестирования и дополнительных исследований вот код, который у меня сработал. Мне пришлось сделать это после ftp_put, а затем использовать MFMT вместо MDTM, потому что синтаксис MDTM у меня не работал. Работает и всем спасибо.

foreach (glob("$path/Content/*.*") as $filename) {
    $time = date('YmdGis', filemtime($filename));
    $contentupstate = ftp_put($connection, "Content/". basename($filename) , $filename, FTP_BINARY); 
    $filemodstate = ftp_raw($connection, "MFMT " . $time . " Content/". basename($filename)); 
};
1 голос
/ 05 мая 2020

Думаю, две возможности, если их поддерживает FTP-сервер (не проверено). Сначала получите время модификации в правильном формате:

$time = date('YmdGis', file_mtime($filename));

Перед PUT (я думаю):

$stat = ftp_raw($connection, "MDTM $time Content/". basename($filename));

Или после PUT:

$stat = ftp_raw($connection, "SITE UTIME $time $time $time Content/". basename($filename));
...