我曾经写过一个Ruby脚本,用于实时检测php代码是否修改,如果修改则马上通过FTP上传到服务器上,服务器在内网上,平时使用FileZilla上传和下载文件都很快,可是这个脚本上传一个2k的文件却要2s的时间,当时我没在意,因为比起手工上传,这个延时不算什么。
最近我将JRuby升级到了1.5.5版本,升级过程很顺利,以前写的脚本都能正常运行,只是FTP上传文件的时间延持的更加厉害,一个2K的文件上传的速度竟然要4-5s(感觉,没有实际计时),这个让我不得不查问题所在了。
这里怎么查问题就不细表,根据我的查找,问题出在ftp.rb下的sendport函数里。
def sendport(host, port)
af = (@sock.peeraddr)[0]
if af == "AF_INET"
cmd = "PORT " + (host.split(".") + port.divmod(256)).join(",")
elsif af == "AF_INET6"
cmd = sprintf("EPRT |2|%s|%d|", host, port)
else
raise FTPProtoError, host
end
voidcmd(cmd)
end
其中af = (@sock.peeraddr)[0]耗费的时间很长,是整个过程中最耗时,文件上传速度慢的罪魁祸首,而查看JRuby源文件可知,这个总是返回AF_INET,因为Java不支持IPv6,于是解决的方法就很简单。只要把af = (@sock.peeraddr)[0]直接改成af = "AF_INET"即可。
def sendport(host, port)
#af = (@sock.peeraddr)[0]
af = "AF_INET"
if af == "AF_INET"
cmd = "PORT " + (host.split(".") + port.divmod(256)).join(",")
elsif af == "AF_INET6"
cmd = sprintf("EPRT |2|%s|%d|", host, port)
else
raise FTPProtoError, host
end
voidcmd(cmd)
end
修改之后,FTP上传文件速度飞快,我一修改完代码,就可以直接刷新浏览器查看效果,再不需要等上一段时间上传完再刷新了,完美
分享到:
相关推荐
JRuby沙箱是_why怪异的怪异沙箱在JRuby中的重新实现,并且很大程度上基于Ola Bini的 ,但已针对JRuby 1.7进行了更新。 先决条件 该gem是针对JRuby 1.7.6开发的,已知可与1.7.8一起使用,但尚未针对其他版本进行测试...
展示JRuby 1.7和9.0.0.0之间的类加载差异 为JRuby 1.7构建: ./gradlew clean ear -PjrubyVersion=1.7.20.1 为JRuby 9.0.0.0构建: ./gradlew clean ear -PjrubyVersion=9.0.0.0.pre2 然后在TomEE plus上从...
这是blog.jruby.org的网站和数据。 它由GitHub页面上的提供支持。 如何贡献 超级容易。 最简单的方法是在撰写帖子,然后通过通过电子邮件发送给我们。 自我领导的方法是遵循以下几个步骤: 在Github上分叉仓库 ...
守卫-jruby-minitest 在 TDD 环境中使用时,Guard 一直是一个很好的生产力助推器。 然而,JRuby 使 TDD 变得更加困难,如果不是不可能的话。 这是因为默认情况下,每个run_on_modification或run_on_change启动一个...
JRuby的主要传播网站- Wiki和文章一点JRuby历史 JRuby Wiki以及开始使用JRuby进行学习的方式 JRuby on Rails的Wiki部分 有关在JRuby中进行编程需要什么的文章 该参考资料显示了从Ruby类到Java类的转换 JSR-292和...
将您的 Ruby 代码放在文件lib/jruby/pcap 。 要试验该代码,请运行bin/console以获得交互式提示。 TODO:删除这个和上面的文字,并描述你的宝石安装将此行添加到应用程序的 Gemfile 中: gem 'jruby-pcap' 然后执行...
找不到或无法加载主类org.jruby.Main。 原因是/usr/local/hbase/lib 目录下没有jruby-complete-1.7.19.jar文件.,下载本文件,解压缩后将jar文件直接添加到/usr/local/hbase/lib 目录下。
JRuby机架JRuby-Rack是Java Servlet环境的轻量级适配器,它允许任何(基于Ruby)Rack的应用程序在Java Servlet容器中未经修改地运行。 JRuby-Rack支持Rails以及任何与Rack兼容的Ruby Web框架。 有关Rack的更多信息,...
赠送Maven依赖信息文件:joni-2.1.2.pom; 包含翻译后的API文档:joni-2.1.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.jruby.joni:joni:2.1.2; 标签:joni、jruby、jar包、java、API文档、中文版; 使用...
JRuby-Lint3工具可以检测应用程序中的大多数JRuby不兼容性。 它遍历代码库并查找常见的陷阱 jrlint 上服务器 jruby -S rackup -s Trinidad jruby -J-Xmx2048m -J-Xms1024m -J-Xmn512m -J-XX:MaxPermSize=512m -S ...
jruby Hibernate使用示例。 此示例使用Hibernate和MySQL后端作为 DOA 来保存基于Virtus模型的示例域聚合。要求jruby-1.7 mysql 5.x设置和运行如果需要,编辑hibernate.cfg.xml以自定义数据库设置。 执行以下操作: #...
jruby-dist-9.1.15.0-bin.zip JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新说明:...
JRuby Mahout Jruby Mahout是一颗宝石,它在JRuby世界中释放了Apache Mahout的力量。 Mahout是用Java编写的高级机器学习库。 它大规模地处理了建议,聚类和分类机器学习问题。 到目前为止,在Ruby项目中很难使用它...
jruby是一个ruby的解析器,可将ruby解析为java文件,jruby作为ruby解析器时刻调用java代码
jruby-dist-9.1.15.0-bin.tar.gz JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新...
Deploying with JRuby: Deliver Scalable Web Apps using the JVM
hbci4jruby 待办事项:写一个宝石描述 发展 JAR 文件是使用。 安装 将此行添加到应用程序的 Gemfile 中: gem 'hbci4jruby' 然后执行: $ bundle 或者自己安装: $ gem install hbci4jruby 用法 TODO:在...
jruby-1.3.1.jar包 解决org.jruby.exceptions.JumpException 等报错
NULL 博文链接:https://renzhen.iteye.com/blog/689432
jruby是从官网上downLoad的,可以在ruby程序中调用Java类库,也可以在Java程序中调用ruby类库,两者使用都相当方便,需要的可以下载尝试。