毎日午前12時に実行されるこのコードがあります。現在のところ、サーバ内の最新のファイルを取得するためには、ftp_mdtm
(変更時刻)を使用する必要があります。私が直面している問題は、サーバーが複数のファイルをサーバーにアップロードすることがあることです。その日の最新ファイルをすべてダウンロードするにはどうすればよいですか?私は現在ftp_get
を使用しています。PHPでftp_getを使用して1つ以上のファイルをダウンロードするには
<?php
$conn = ftp_connect('abc.com');
ftp_login($conn, 'lalala', '12345');
// get list of files on given path
$files = ftp_nlist($conn, '');
$mostRecent = array(
'time' => 0,
'file' => null
);
foreach ($files as $file) {
// get the last modified time for the file
$time = ftp_mdtm($conn, $file);
if ($time > $mostRecent['time']) {
// this file is the most recent so far
$mostRecent['time'] = $time;
$mostRecent['file'] = $file;
}
}
ftp_get($conn, "$file.zip", $mostRecent['file'], FTP_BINARY);
ftp_close($conn);
$file_open= $file . ".zip";
$path = "./zip/";
$zip = new ZipArchive;
$res = $zip->open($file_open);
if ($res === true) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
//echo "$file_open extracted to $path";
} else {
//echo "I couldn't open $file_open";
}
$servername = "localhost"; //server IP or name
$uname = "lalala"; //username
$pword = ""; //password
$dbname = "lalala"; //database name
$db = new mysqli($servername, $uname, $pword, $dbname);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
//print_r (glob("test/*.txt"));
//exit();
foreach (glob($path . "/*.TXT") as $file) {
$file_handle = fopen($file, "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
$new_file = substr($file, 7);
//echo $line;
$query_check = "SELECT filename FROM fos_data WHERE filename = '$new_file'";
$result=mysqli_query($db,$query_check);
$row = mysqli_fetch_assoc($result);
$exist = $row['filename'] . "<br>";
$rowcount=mysqli_num_rows($result);
if ($rowcount > 0) {
$update = " UPDATE fos_data
SET value = '$line'
WHERE filename = '$new_file'";
$result=mysqli_query($db,$update);
echo "Data " . $new_file . " Updated <br>";
}
else{
$insert = "INSERT INTO fos_data
(filename,
value)
VALUES
('$new_file',
'$line')";
$result=mysqli_query($db,$insert);
echo "Data " . $new_file . " Saved <br>";
}
/**/
}
fclose($file_handle);
}
mysqli_close($db);
?>
おかげで、私はそれに応答する第一 –