curl 跨服务器同步文件

简介:

有一个需求,情况如下:

两台服务器,一台测试服务器[apache],一台生产服务器[nginx],产品编辑人员在测试服务器使用php upload批量上传产品,图片,经检查后,可以同步其所上传的产品和图片[打包成zip文件]到生产服务器上,但生产服务器上不接受php upload上传文件的,那么就不能在测试服务器上直接post到正式服务器了。

 

暂时想到几个方法:
1. 使用rsync手动同步过去,但需要配置,并且需要php执行shell命令,但我不想这样。
2. 可以使用socket来传送数据,但需要开启端口,我也不想这么做,因如果一时忘记在防火墙开放端口,就无法传送了
3. 测试服务器发送信号到生产服务器,让生产服务器使用php curl从测试服务器下载文件并处理
通过比较,还是觉得第3种方法比较妥当,直接全程使用php来处理,至少减少一些不必要的维护麻烦

4.直接通过url全路径方式调用测试服务器图片,方法简单缺陷测试服务器删除图片就没有办法

Java代码   收藏代码
  1. <?php  
  2. function curl_download($testing_server_file, $local_file)  
  3. {  
  4.     $fp = fopen($local_file, "wb");  
  5.   
  6.     $rfp = curl_init($testing_server_file);  
  7.     curl_setopt($rfp, CURLOPT_FILE, $fp);  
  8.     curl_setopt($rfp, CURLOPT_HEADER, 0);  
  9.     curl_exec($rfp);  
  10.   
  11.     $errno = curl_errno($rfp);  
  12.     $errmsg = curl_error($rfp);  
  13.     curl_close($rfp);  
  14.   
  15.     fclose($fp);  
  16.   
  17.     if ($errno) {  
  18.         echo $errmsg;  
  19.         exit;  
  20.     }  
  21. }  

 测试服务器发送post请求

Java代码   收藏代码
  1. <?php  
  2. function execUpload(){  
  3.     $ch = curl_init();  
  4.     //$filePath = 'd:\usr\www\translate\document\Readme.jpg'  
  5.     if (class_exists('\CURLFile')) {//php>5.4  
  6.         $post_data = array('file' => new \CURLFile($filePath));  
  7.     } else {  
  8.         $post_data = array('file' => '@' . $filePath);  
  9.     }  
  10.     curl_setopt($ch, CURLOPT_HEADER, false);  
  11.     curl_setopt($ch, CURLOPT_POST, true);  
  12.     curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);  
  13.     curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);  
  14.     curl_setopt($ch, CURLOPT_URL, 'http://www.b.com/handleUpload.php');//正式服务器处理上传  
  15.     //curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file)); //这句非常重要,告诉远程服务器,文件大小    
  16.     $info= curl_exec($ch);  
  17.     curl_close($ch);  
  18.   
  19.     print_r($info);  
  20. }  

 

相关文章
|
18天前
|
缓存 监控 网络安全
因服务器时间不同步引起的异常
因服务器时间不同步引起的异常
57 1
|
24天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
60 9
|
3月前
|
存储 UED Windows
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
177 1
|
4月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
101 5
|
2月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
34 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
3月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
55 4
|
2月前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
359 0
|
4月前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
426 1
Linux 服务器下载百度网盘文件
|
4月前
|
存储 安全 文件存储
【服务器数据恢复】Apple苹果Xsan文件系统卷宗误操作导致文件丢失数据恢复案例
客户因误操作删除了macOS服务器上的重要图片和视频文件,需紧急恢复。Xsan文件系统作为苹果专为高负载环境设计的64位簇文件系统,在未有专门恢复工具的情况下,常规RAW恢复仅能提取小部分连续存储的小文件,且无目录结构。通过专业的数据恢复流程,包括安全挂载、阵列重组,并使用专用工具解析文件系统以恢复目录结构,最终成功恢复丢失的文件。此案例突显了Xsan文件系统的特点及其恢复难度。
41 1
|
4月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
76 0