【发布时间】:2013-01-01 00:07:59
【问题描述】:
我构建了一个 php 哈希系统,但我对脚本的速度性能感到困惑。 我为不同数量的请求对脚本做了一个基准测试(速度仅针对脚本,不涉及其他内容)。
10 个请求:0.001 秒
100 个请求:0.011 秒
1000 个请求:0.073 秒
10000 个请求:0.667 秒
100000 个请求:6.776 秒
100万后服务器返回黑屏
我的困惑:
如果有 1000 个用户尝试同时登录,每个用户的密码输入需要 0.00001 秒进行哈希处理并与他们的原始密码进行核对,还是每个用户需要 0.073 秒?
benM 这是基准测试的脚本:
function test()
{
global $result;
ob_start();
$x = microtime(true);
while($i < 10000)
{
print // here you add whatever you want to test;
++$i;
}
$temp = microtime(true) - $x;
ob_end_clean();
return $temp;
}
echo number_format(test(), 3);
【问题讨论】:
-
您如何对此进行基准测试?如果它是对服务器的单个请求,则无需担心。 0.00001 秒对于单个请求是正确的。每个登录本质上是一个单独的连接,因此是请求。服务器应该像处理单个请求一样管理它(很难解释,但希望这是有道理的)。
-
今天的服务器是多线程的。今天的机器有多个内核。这配合得很好。你担心这些事情太快了。过早的优化是万恶之源。
-
百万返回空白——是否触发了 PHP 超时?您可以在 php.ini/htaccess 或程序中设置超时值。
-
关于“我已经建立了一个哈希系统”:您使用的是什么算法?此外,如果它用于密码散列,请注意快速不被认为对密码散列算法有好处。他们越快,他们破解的速度就越快。另外,如果这是用于密码,我可以谦虚地建议使用像this one 这样的体面的安全库,而不是自己滚动。
-
@alex_petrea - 很公平。 bcrypt 是最好的算法,所以如果你使用它,你就走在了正确的轨道上。 (这是我建议的图书馆使用的,以及你会发现的任何其他体面的图书馆)