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