快使用php,使用PHP快速通过网络传输大量小文件-程序员宅基地

技术标签: 快使用php  

通过SSH隧道使用gzip压缩包很快.比纯scp更快的速度,特别是对于许多小文件.以下是linux命令行的示例:

user@local# cd /source/ ; tar czf – * | ssh user@remote “cd /target/ ; tar xzf -“

更新:根据要求,这里你使用一个纯PHP解决方案 – 有一些乐趣摆弄这个棘手的位.

注意:您需要PHPs libssh extension才能工作.此外,STDIN似乎仅在使用SSH的流包装器时可用.

这几乎没有开销,因为它直接在流上运行,并且您的CPU很可能总是比您用于传输的网络链接更快.

要交换网络与CPU速度,可以从命令行中删除选项-z. (CPU使用率更低,但线路上的数据更多)

代码示例:

$local_cmd = "cd /tmp/source && tar -czf - *";

$remote_cmd = "tar -C /tmp/target -xzf -";

$ssh = new SSH_Connection('localhost');

$auth = $ssh->auth_password('gast', 'gast');

$bytes = $ssh->command_pipe($local_cmd, $remote_cmd);

echo "finished: $bytes bytes of data transfered\n";

class SSH_Connection {

private $link;

private $auth;

function __construct ($host, $port=22) {

$this->link = @ssh2_connect('localhost', 22);

}

function auth_password ($username, $password) {

if (!is_resource($this->link))

return false;

$this->auth = @ssh2_auth_password($this->link, $username, $password);

return $this->auth;

}

function command_pipe ($localcmd, $remotecmd) {

if (!is_resource($this->link) || !$this->auth)

return false;

// open remote command stream (STDIN)

$remote_stream = fopen("ssh2.exec://{$this->link}/$remotecmd", 'rw');

if (!is_resource($remote_stream))

return false;

// open local command stream (STDOUT)

$local_stream = popen($localcmd, 'r');

if (!is_resource($local_stream))

return false;

// connect both, pipe data from local to remote

$bytes = 0;

while (!feof($local_stream))

$bytes += fwrite($remote_stream,fread($local_stream,8192));

// close streams

fclose($local_stream);

fclose($remote_stream);

return $bytes;

}

function is_connected () { return is_resource($this->link); }

function is_authenticated () { return $this->auth; }

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30376627/article/details/116369172

智能推荐

java获得当前时间一小时前的时间_java获取当前时间前1h-程序员宅基地

文章浏览阅读2.1w次,点赞4次,收藏9次。Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) - 1);// 让日期加1 System.out.println(calendar.get(Calendar.D_java获取当前时间前1h

生成模型在计算机视觉、自然语言处理、推荐系统中的应用和研究_父母基因怎么组合-程序员宅基地

文章浏览阅读1.1k次。随着计算机的飞速发展,人工智能技术的逐渐成熟,越来越多的人开始关注这个新兴的领域,开始开发出新的产品和服务。在这个信息爆炸的时代,数据量的呈几何级增长,需要人们对海量数据的分析、处理和决策,而机器学习就是人工智能的一个重要组成部分。从传统的统计学习到深度学习(如卷积神经网络CNN),人工智能技术不断的进步,已经引起了很大的社会影响。在这个过程中,生成模型是一个非常重要的工具,它可以用来帮助理解复杂的数据集。通过训练一个生成模型,可以从父亲的基因中产生出一个系列可能的孩子的基因序列,_父母基因怎么组合

virtuoso 后仿 ADE L error_后仿真 referencing an undefined model or subcircuit-程序员宅基地

文章浏览阅读470次。解决办法:在model library添加dio_tt的model。原因:model library 没设置二极管的model。ADE后仿时出现error。_后仿真 referencing an undefined model or subcircuit

深度学习笔记——pytorch实现双向GRU(BiGRU)-程序员宅基地

文章浏览阅读1k次,点赞12次,收藏16次。参考视频。_双向gru

东方博宜OJ答案 (1011~1020)_东方博宜oj答案1062-程序员宅基地

文章浏览阅读926次,点赞12次,收藏8次。欢迎大家能看到我的文章,这篇文章收录了东方博宜OJ 1011~1020所有题目的答案,后续还会往后出,敬请关注!如遇不足,欢迎指出!(不要喷我┭┮﹏┭┮)_东方博宜oj答案1062

电子设计教程49:16*16LED点阵屏驱动-74HC595的原理_16*16点阵引脚-程序员宅基地

文章浏览阅读6.9k次,点赞12次,收藏60次。  我尝试通过移位寄存器级联+三八译码器,实现用3跟控制线,驱动16*16LED点阵屏的效果。这是第一篇博客,讲述74HC595芯片的工作原理  一般情况下,使用单片机来控制LED。一个引脚,控制一个LED,是最直观的方法。但也是最笨的方法。引脚对于单片机来说是珍贵的资源,同样性能的芯片引脚越多,价格就越贵。然而有些外设会占用很多引脚,例如LED屏幕。理论上来讲,一个LED需要一个引脚来操作,64个LED组成8×8屏幕,就需要多达64个引脚。但聪明的工程师会节省引脚,把LED按照行列连接,形成矩阵,只需要_16*16点阵引脚

随便推点

Retrofit:使用【Retrofit】优雅地对接第三方接口_lianjiatech-程序员宅基地

文章浏览阅读1.6k次。我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连,感谢~文章目录前言前言_lianjiatech

面试阿里 P6,过关斩将直通 2 面,结果 3 面找了个架构师来吊打我_阿里p6二面-程序员宅基地

文章浏览阅读984次,点赞2次,收藏4次。前言人人都有大厂梦,对于程序员来说,BAT 为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金,让人瞻仰。同样的,小编的好朋友的个人目标也是阿里,但之前一直在一家小公司,一呆就是好几年,现在通过不断学习和实践,提升了自己很多,也有了信心来阿里挑战。下面,就是朋友分享的这次面试阿里 P6 的一些经历和心得。阿里 P6 岗面试经历这次阿里的面试经历实朋友说实在是在太紧张+刺激+尴尬了,面试前还自信_阿里p6二面

开关稳压器详解(四)-Buck降压型开关稳压器自举电路_自举驱动的buck电路-程序员宅基地

文章浏览阅读8.9k次,点赞12次,收藏121次。在Buck开关中,常使用N-MOS管作为功率开关管。相比于P-MOS,N-MOS具有导通电阻低价格便宜且流过电流较大等优势。在同步结构中对于开关管的使用一般有两种方式:上管为P-MOS,下管为N-MOS;无需外部自举电路上下管均为N-MOS;需要外部自举电路从上图可知,由于N-MOS导通条件是栅极电压比源极电压高。对于上管而言必须增加自举电路才能保证上管完全导通。下面就介绍下自举电路..._自举驱动的buck电路

YOLOv4 介绍及其模型优化方法-程序员宅基地

文章浏览阅读2.2k次。YOLOv4 介绍及其模型优化方法一、YOLOv4 介绍2020 年 4 月,YOLOv4 在悄无声息中重磅发布,在目标检测领域引起广泛的讨论。在 YOLO 系列的原作者 Joseph R..._yolo模型剪枝和蒸馏

Android Native Crash 收集(1)-程序员宅基地

文章浏览阅读617次,点赞27次,收藏21次。感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。

bootstrap-fileinput后端接收不到数据_动态人像抓拍比对系统架构(前端抓拍+网络传输+后端视频解析)...-程序员宅基地

文章浏览阅读103次。动态人像抓拍比对系统由前端人脸抓拍采集子系统、网络传输子系统和后端解析管理子系统组成,实现对通行人脸信息的采集、传输、处理、分析与集中管理。系统中,前端人脸采集设备负责人脸图像的采集,接入服务器主要实现图片及信息的接收和转发功能,可为多种型号、多个厂家的抓拍机提供统一接入服务,接收到的抓拍图片存入云存储单元,并由人脸结构化分析服务器对抓拍的视频及图像进行建模以及黑名单实时比对报警,建模得到的人脸信..._bootstrap fileinput request.form.files获取不到