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. }  

 

相关文章
|
2月前
Netty实战: HTTP文件列表服务器
Netty实战: HTTP文件列表服务器
23 0
|
2月前
|
定位技术
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
|
2月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
424 4
|
3月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
54 3
|
2月前
|
Linux 网络安全 Python
如何在服务器上运行python文件
如何在服务器上运行python文件
|
3天前
|
安全 Linux 网络安全
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件
14 0
|
9天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
45 0
|
9天前
|
Apache 项目管理 数据安全/隐私保护
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
|
10天前
|
Apache 项目管理 数据安全/隐私保护
TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器
TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器
|
15天前
|
数据采集 前端开发 JavaScript
vue3 + fastapi 实现选择目录所有文件自定义上传到服务器
vue3 + fastapi 实现选择目录所有文件自定义上传到服务器
22 0