【问题标题】:Modifying PDO script to use functions, more efficient and less sequential修改 PDO 脚本使用函数,效率更高,顺序更少
【发布时间】:2018-03-09 15:21:28
【问题描述】:

我花了几天时间编写了一个脚本,该脚本主要在 db2 系统上获取一些数据并在 mysql 系统中为其创建新记录。在此过程中,它会进行一些检查,并且我使用循环来根据这些条件进行插入或更新。

此脚本有效,它返回我期望的内容并按预期插入/更新。我已经测试了它的删除过程,更新,插入,记录是否过期......基本上这个脚本的每个功能我都测试过。

我觉得它并没有尽可能快,它可能比它应该的更连续和冗余。

我不习惯在这样的脚本中使用 PDO,但我想知道在这里我可以做些什么来修复性能/速度和冗余。我知道一些逻辑可能“看起来”是多余的,但逻辑正是它需要的地方,我只是想知道我是否可以/应该使用函数来减少调用或循环。

非常感谢任何帮助或建议。

【问题讨论】:

  • 我觉得这个问题更适合codereview.stackexchange.com
  • 你已经在 codereview 上问过同样的问题,我回答了。然后,您删除了问题和答案,并且您在此处发布了几乎相同的问题。从你的标题我知道你已经阅读了我的回复。我认为,这种行为值得一票否决。

标签: php mysql pdo


【解决方案1】:

这很棘手,我会为此被拖到热煤上,1)如果您确定不存在直接注入攻击的风险,您可能根本不想使用 PDO,2)我也会看看通过PHP CLI 实现此类功能,即通过 curl 触发器上的 acron 作业

一般来说,PDO 是一种运行查询的非常昂贵的方式。 mysqli_query() 下的一个简单字符串的效率大约会提高 2.5 倍。

【讨论】:

  • 伙计,我希望在开始移植超过 500,000 条记录之前就知道这一点!哈哈。无论如何都没有注入攻击的风险。这是一个本地运行的脚本,每晚运行
  • 我很乐意使用mysqli_query(),您可能还想在PHP CLI 模式下使用PHP(基本上是通过crontab 进行bash,然后有一个日志文件,你会在最后收到电子邮件等) 这是因为 CLI 无论如何都更快,批处理更快并且不会超时
  • 好的。那么我是否会有效地通过这个脚本并用旧的 mysqli/odbc_connect 替换我的 PDO 连接,然后只更改我的准备/执行点以匹配?
  • 如果没有注入攻击的风险,不使用 PDO 到底是什么意思?您似乎在暗示 mysqli 不太安全,或者您不需要准备好的语句。顺便说一句,我不同意这两个。
  • 关于您的1) 点,请不要推断mysqli 的安全性较低并且无法处理只有 PDO 可以执行的SQL 注入攻击。
猜你喜欢
  • 2018-03-08
  • 2012-03-23
  • 2015-04-26
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多