php - 使用 : the MySQL or PHP md5 function? 什么更快/更好

标签 php mysql performance function md5

我根据数据库检查了用户的密码。

什么更快,MySQL MD5函数

... pwd = MD5('.$pwd.')

或者 PHP MD5 函数

... pwd = '.md5($pwd).'

这两个选项之间正确的方法是什么?

最佳答案

如果您的应用程序仅在有人在您的站点上注册或登录时才计算 md5,那么您每小时会多次调用 md5 吗?几百?如果是这样,我认为 PHP 和 MySQL 之间非常小的区别根本不会很重要。

问题应该更像是“我应该把密码是使用 md5 存储的事实放在哪里”而不是“是什么让我几乎什么都没赢”。

并且,作为旁注,另一个问题可能是:您可以在哪里负担得起为此类计算花费的资源?如果您有 10 台 PHP 服务器和一台 DB 服务器已经处于高负载状态,您就会得到答案;-)

但是,只是为了好玩:

mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (2.24 sec)

在 PHP 中:

$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
    $a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";

给出:

$ php ~/developpement/tests/temp/temp.php
3.3341760635376

但是您可能不会像这样计算一百万个 md5,对吗?

(这与防止 SQL 注入(inject)无关:只需转义/引用您的数据!总是!或使用准备好的语句)

关于php - 使用 : the MySQL or PHP md5 function? 什么更快/更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184543/

相关文章:

javascript - 表单提交时未调用 Ajax 函数

php - 使用pdo执行存储过程

java - 将数据库数据转换为对象

python - subprocess.call() 和 os.system() 之间的速度差异

php - 如何在 PhpDoc 文档 block 中使用 NetBeans 和 SVN @version 标记?

php - Mysqli 插入不工作。没有错误弹出

javascript - document.elementFromPoint 速度慢

javascript - 更快地找到具有频率值的二维关键字数组的出现

php - 以 DDD 方式与实体相关的外部第三方 API

mysql - ERD设计的正反面