Java作为一个cron脚本与MySQL交互与使用PHP

Java作为一个cron脚本与MySQL交互与使用PHP,第1张

概述Java作为一个cron脚本与MySQL交互与使用PHP

我目前有几个Java程序使用Cron读取和更新MysqL数据库。

我正在考虑将代码移植到PHP。 在我这样做之前,我做了一个简单的基准testing, SELECT某个表中的所有行,然后将这些值存储在一个string中。

我为PHP和Java程序循环10000次。 PHP在5秒内运行它。 Java花了大约1分钟。

我对于performance的差异感到惊讶。 这是对的吗? Java真的很慢吗? 还是我做错了什么?

cron作业在linux / PHP中备份数据库

PHP的cron脚本每分钟发射一次以上

Godaddy cron作业设置为运行PHP脚本

MysqL PHP添加3306没有我的input

从LAMP网页更新cron的安全方法

我目前在CentOS 5.5中运行JDK 6和PHP Cli 5.3的cron脚本。

这是Java中的代码:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class Test { private Connection connection = null; private Statement statement = null; public static voID main(String args[]) { (new test()).run(); } private voID initDB() { try { String url="jdbc:MysqL://localhost:3306/db"; Class.forname( "org.gjt.mm.MysqL.Driver" ); connection = DriverManager.getConnection(url,"username","password"); statement = connection.createStatement(); } catch (Exception e) { e.printstacktrace(); } } private String getUserProfiles() { String query = "SELECT * FROM UserProfile;"; String output = ""; try { for(int i = 0; i < 10000; ++i) { ResultSet rs=statement.executequery(query); while(rs.next()) output += rs.getString("name"); } } catch (Exception e) { e.printstacktrace(); } return output; }

/ 更多的代码继续 /

然后在PHP中:

try { $db = new PDO("MysqL:host=localhost;dbname=db;charset=utf8",'username','password'); $str = ""; for($i=0; $i < 10000; ++$i) { $qry = $db->prepare('SELECT * FROM UserProfile;'); $qry->execute(); $result = $qry->fetchAll(PDO::FETCH_OBJ); foreach($result as $profile) { $str .= $profile->name; } } } catch(PDOException $e) { echo $e->getMessage(); exit; }

cronjob上的PHP错误,在提示符下正常工作

运行PHP脚本时,crontab找不到需要的PHP文件

PHP错误行1:`<?PHP?>'

确保linux上只有一个正在运行的PHP进程

在某个事件发生前24小时安排电子邮件通知?

在这种情况下,您可以使用StringBuffer来提高Java的字符串性能

private String getUserProfiles() { String query = "SELECT * FROM UserProfile;"; StringBuffer output = new StringBuffer(); try { for(int i =0; i < 10000; ++i) { ResultSet rs=statement.executequery(query); while(rs.next()) output.append(rs.getString("name")); } } catch (Exception e) { e.printstacktrace(); } return output.toString(); }

我相信这将主要取决于您为每种语言编写的代码(与PHP相比,Java代码是什么样的?)。 如此大的差异暗示了某些不同之处。 也许你正在建立或维护数据库连接的方式?

不同之处在于你如何处理结果。 在Java版本中,您使用String,这意味着您将每次在循环中创建一个新副本。 尝试使用StringBuffer并附加结果,而只完成时将其转换为字符串。

查看http://www.veLocityrevIEws.com/forums/t146183-why-string-is-immutable.HTML ,了解为什么String的行为如此。

它看起来像你真正比较的是一种通过串联编译非常大的字符串的方法; 这不是一个真正的数据库应用程序可能做的事情,再加上你没有以最有效的方式在Java中做这件事(你在Java中以糟糕的方式来做这件事)。

我确信你不应该根据这个人为的,执行不力的基准来选择语言。

考虑哪种语言对你来说更简单的代码。 我建议你用PHP编写它,因为从代码来看,你对Java的把握显然比较弱。

总结

以上是内存溢出为你收集整理的Java作为一个cron脚本与MySQL交互与使用PHP全部内容,希望文章能够帮你解决Java作为一个cron脚本与MySQL交互与使用PHP所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存