我有两个网站。在一个我的客户可以上传他们想要处理的图像。现在我想找到一种方法,使用php和cron将所有上传的图像从服务器1复制到服务器2。
这可能吗?如果是这样的话?
答案 0 :(得分:1)
如果两个服务器都有一个共享区域来上传文件,那么效率会更高效。
理想情况下,客户端的脚本应该将图像上传到第二台服务器上的共享文件夹,因为这是执行所有处理的文件夹。
然后您的第二台服务器可以处理图像并将输出保存到其他文件夹。
我认为,通过PHP在两台服务器之间复制文件是一种非常低效的解决方案,因为您会在两台服务器上浪费服务器资源。
如果您希望两台服务器上的客户端映像都不复制,请将客户端的代码发送到服务器上的脚本,并让服务器脚本将映像保存到临时文件夹,并且可能具有相同的脚本进程它并生成输出,因此无需复制,处理和cron脚本。
答案 1 :(得分:0)
<?php
$source = 'http://www.testing.com/abc';
$destination = $_SERVER['DOCUMENT_ROOT'] . '/test/';
if (copy($source , $destination )) {
//File copied successfully
}else{
//File could not be copied
}
?>
答案 2 :(得分:0)
以下是此方法:
首先,使用PHP Copy将文件从服务器移动到服务器。您只需在目标服务器中创建一个php文件,然后在浏览器中加载一次文件即可。
job
其次,使用PHP FTP将文件从服务器移动到服务器。
但是,如果文件以某种方式受到此方法的保护,有时使用PHP Copy无效(热链接保护可能?)。 例如,源代码来自Hostgator,它不起作用。
但我们可以使用另一种方法。使用FTP(在PHP中)使用代码进行传输:
$remote_file_url = 'http://origin-server-url/files.zip';
// New file name and path for this file
$local_file = 'files.zip';
// Copy the file from source url to server
$copy = copy( $remote_file_url, $local_file );
// Add notice for success/failure
if( !$copy ) {
echo "Doh! failed to copy $file...\n";
}
else{
echo "WOOT! success to copy $file...\n";
}
使用FTP你有更多的灵活性,上面的代码使用ftp_get将文件从源服务器导入到目标服务器。但我们也可以使用ftp_put将文件(发送文件)从源服务器导出到目标,使用以下代码:
$remote_file = 'files.zip';
/* FTP Account */
$ftp_host = 'your-ftp-host.com'; /* host */
$ftp_user_name = 'ftp-username@your-ftp-host.com'; /* username */
$ftp_user_pass = 'ftppassword'; /* password */
/* New file name and path for this file */
$local_file = 'files.zip';
/* Connect using basic FTP */
$connect_it = ftp_connect( $ftp_host );
/* Login to FTP */
$login_result = ftp_login( $connect_it, $ftp_user_name, $ftp_user_pass );
/* Download $remote_file and save to $local_file */
if ( ftp_get( $connect_it, $local_file, $remote_file, FTP_BINARY ) ) {
echo "WOOT! Successfully written to $local_file\n";
}
else {
echo "Doh! There was a problem\n";
}
/* Close the connection */
ftp_close( $connect_it );
为了更容易理解:
答案 3 :(得分:0)
如果您想复制单个文件:
$src = "http://www.imagelocation.com/image.jpg";
$dest = "/server/location/upload/" . basename($src);
file_put_contents($dest, file_get_contents($src));
用于多份副本:
$directory = '/path/to/my/directory';
$scanned_directory = array_diff(scandir($directory), array('..', '.'));
foreach($scanned_directory as $file_image) {
$src = $file_image;
$dest = "/server/location/upload/" . basename($src);
file_put_contents($dest, file_get_contents($src));
}
源服务器路径应具有复制权限。