上传文件到服务器端后进一步推送到sftp服务器
扩展安装
要想sftp服务端发送文件,就需要php脚本具有作为ssh客户端的能力,所以需先为php安装如下扩展
- openssl
- openssl-dev
- libssh
- php ssh 扩展
按照下面的命令进行安装
rpm -qa | grep openssl
wget http://www.libssh2.org/download/libssh2-1.6.0.tar.gz
tar zxvf llibssh2-1.6..tar.gz
cd libssh2-1.6.
./configure
make && make install
wget http://pecl.php.net/get/ssh2-0.11.3.tgz
tar xvf ssh2-0.11..tgz
cd ssh2-0.11.
phpize
./configure --with-ssh2
make
cp modules/ssh2.so /alidata/server/php-5.4./lib/php/extensions/no-debug-non-zts-
echo 'extension=ssh2.so' >> /alidata/server/php-5.4./etc/php.ini
service nginx restart
php -i | grep ssh2
服务器软件安装路径需要根据实际情况修改
php推送脚本
注意这里服务端已经处理完文件上传,这个推送的部分可以另起一个线程或进程去推送
public function proccessFile($destinationPath, $filename)
{
//parent::proccessFile($destinationPath, $filename); // TODO: Change the autogenerated stub $remoteBasePath = '/mnt/java/pipeline/ads/upload/';
$localBasePath = '/alidata/www/aft/';
$connection = ssh2_connect('XXX.XXX.XXX.XXX', 22);
ssh2_auth_password($connection, 'username', 'password');
/*
$sftp = ssh2_sftp($connection);
SiteHelpers::PE($sftp);
$resFile = fopen("ssh2.sftp://$sftp/mnt/java/pipeline/ads/upload", 'w');
$srcFile = fopen('/alidata/www/aft/'.$destinationPath.'/'.$filename,'r');
$writtenBytes = stream_copy_to_stream($srcFile, $resFile);
fclose($resFile);
fclose($srcFile);
*/
$dateDir = date("Y-m/d",strtotime("-1 day"));
// SiteHelpers::PE($remoteBasePath.$dateDir.'/'.$filename);
// $sftp = ssh2_sftp($connection);
// ssh2_sftp_mkdir($sftp,$remoteBasePath.$dateDir);
ssh2_exec($connection,'mkdir -p '.$remoteBasePath.$dateDir);
ssh2_scp_send($connection,
$localBasePath.$destinationPath.'/'.$filename,
$remoteBasePath.$dateDir.'/'.$filename); Log::info('处理了投放数据');
Log::info($destinationPath.'/'.$filename);
}
可以看到最后文件成功推送到sftp服务器

上传文件到服务器端后进一步推送到sftp服务器的更多相关文章
- WebClient 上传文件 上传文件到服务器端
一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...
- OkHttp上传文件,服务器端请求解析找不到文件信息的问题
长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...
- kbmmw 的HTTPSmartService 上传文件到服务器端
前面我写过了 HTTPSmartService 使用介绍,可以参见以前的文章. 前一向有同学问如何在http 页面表单上上传文件.一直没有时间回答,自己简单做了例子, 发现无法实现功能,今天花了一天时 ...
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息
多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...
- 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子
客户端:先创建一个winform窗体的应用程序项目 项目结构
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- 上传文件及$_FILES的用法实例
Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...
- SpringMVC+jquery.uploadify 上传文件
前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
//先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...
随机推荐
- SQLite 入门教程(三)好多约束 Constraints(转)
转于: SQLite 入门教程(三)好多约束 Constraints 一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应 ...
- C#基础知识-对象初始化顺序
本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJerem ...
- 安装J2EE的SDK报错:could not find the required version of the Java(TM)2 Runtime Environment in '(null)'的解决办法。
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- hdu 3183 A Magic Lamp(RMQ)
题目链接:hdu 3183 A Magic Lamp 题目大意:给定一个字符串,然后最多删除K个.使得剩下的组成的数值最小. 解题思路:问题等价与取N-M个数.每次取的时候保证后面能取的个数足够,而且 ...
- 实战RPM包制作
在开发中经常会用到一些rpm包,但是一直没有自己手动制作过.今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo ...
- 15 Linux Split and Join Command Examples to Manage Large Files--reference
by HIMANSHU ARORA on OCTOBER 16, 2012 http://www.thegeekstuff.com/2012/10/15-linux-split-and-join-co ...
- css :after和:before
:before是css中的一种伪元素,可用于在某个元素之前插入某些内容.:after是css中的一种伪元素,可用于在某个元素之后插入某些内容. 举例: 1.结合border写个对话框的样式. < ...
- Android Activiy的作用
在Android应用程序中 ,Activity主要的负责创建窗口的,一个Activicy就是代表一个单独的屏幕,并且是用户唯一可以看到的东西 也就是说Activity就是用来实现和用户交互的,就和.n ...
- html5标签兼容ie6,7,8
注册博客园已经三年了,这三年一直在忙,没时间写博文.也许是忙,也许是懒吧!当然这三年发生了很多事,我也从开发人员转变为前端人员. 是时候对所学的,所用的知识做一下沉淀了.就从这一篇开始吧! html5 ...
- eclipse 注释模板设置
方法注释模板 /** * @title ${enclosing_method} * @description ${todo} * ${tags} ${return_type} * @Date ${da ...