From 75471ecd99d1b3583a2c87dd71b56a72358de4f2 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 30 Jun 2019 20:41:08 +0000 Subject: [PATCH] Reuse FTP connection if possible --- lib/fetch.php | 36 ++++++++++-------------------------- 1 files changed, 10 insertions(+), 26 deletions(-) diff --git a/lib/fetch.php b/lib/fetch.php index bb36a1a..57ffaaa 100644 --- a/lib/fetch.php +++ b/lib/fetch.php @@ -1,4 +1,6 @@ <?php +require_once(__DIR__.'/FtpConnection.php'); + function ftp_fetch_if_newer($url, $file = NULL) { $url = parse_url($url); if(!isset($url['scheme']) || $url['scheme'] != 'ftp') { @@ -30,24 +32,9 @@ $localSize = filesize($file); } - $ftp = ftp_connect($url['host'], $url['port'], 10); - if($ftp === FALSE) { - throw new Exception('FTP connection failed'); - } - if(!ftp_login($ftp, $url['user'], $url['pass'])) { - throw new Exception('FTP login failed'); - } - if(!ftp_pasv($ftp, TRUE)) { - throw new Exception('Passive FTP request failed'); - } - $remoteSize = ftp_size($ftp, $url['path']); - if($remoteSize < 0) { - throw new Exception('FTP file size fetch failed'); - } - $remoteTime = ftp_mdtm($ftp, $url['path']); - if($remoteTime < 0) { - throw new Exception('FTP modification time fetch failed'); - } + $ftp = FtpConnection::create($url['host'], $url['port'], $url['user'], $url['pass']); + $remoteSize = $ftp->size($url['path']); + $remoteTime = $ftp->mdtm($url['path']); $updated = FALSE; @@ -55,16 +42,13 @@ if(file_exists($file.'.tmp')) { unlink($file.'.tmp'); } - if(ftp_get($ftp, $file.'.tmp', $url['path'], FTP_BINARY)) { - touch($file.'.tmp', $remoteTime); - if(!rename($file.'.tmp', $file)) { - throw new Exception('Temporary file rename failed'); - } - $updated = TRUE; + $ftp->get($file.'.tmp', $url['path'], FTP_BINARY); + touch($file.'.tmp', $remoteTime); + if(!rename($file.'.tmp', $file)) { + throw new Exception('Temporary file rename failed'); } + $updated = TRUE; } - - ftp_close($ftp); return $updated; } -- Gitblit v1.9.1