ssh2 sftp — php скачать файл с другого сервера

Мое приложение находится на сервере A, а база данных — на другом сервере B.
С помощью mysql выгрузите в каталог / tmp сервера B.
Я хочу скачать этот файл с помощью php-кода на сервере A

<?php
$fullpath = '/tmp/users.csv';

Mysql SELECT ......INTO OUTFILE '$fullpath'
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
ESCAPED BY '\"'
LINES TERMINATED BY '\n'

$connection = ssh2_connect('serverb', 22);
ssh2_auth_password($connection, 'username', 'password');

if(ssh2_scp_recv($connection, $fullpath, $fullpath)) {
echo $filepath.' copied to server!!';
}
$filename1 = 'users.csv';

$mm_type="application/csv";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-Type: application/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$filename1.'"');
header("Content-Transfer-Encoding: binary\n");
readfile($fullpath);
exit;
?>

с помощью mysql выберите файл выходного файла, сохраненный на сервере B, но не способный загрузить с сервера A, на котором выполняется код php
С уважением

2

Решение

Вы также можете попробовать функцию «fputcsv» для загрузки данных в формате CSV.
Вы можете подключиться к вашей базе данных, как вы делаете в приложении

$filename = 'users.csv';
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$filename.'.csv');
ob_clean();

$output = fopen('php://output', 'w');

fputcsv($output, array('Column1', 'Column2'));

$exceldata = $this->ModelName->query("SELECT field1, field2 from TableName");
// loop over the rows, outputting them
foreach($exceldata as $exceldataval){
fputcsv($output, $exceldataval);
}

fclose($output);
exit;
1

Другие решения

Вы также можете использовать команду SCP для перемещения файла с сервера A на сервер B

scp destination_server_username @ IP-адрес: /path/filename.zip usource_server_username @ IP: /path/file.zip

0

По вопросам рекламы [email protected]