Jeśli twoja aplikacja przelicza tylko md5, gdy ktoś zarejestruje się w Twojej witrynie lub zaloguje się, masz wiele połączeń do md5 na godzinę? Kilkaset? Jeśli tak, to nie sądzę, żeby różnica między PHP a MySQL była naprawdę mała.
Pytanie powinno bardziej przypominać "gdzie umieścić fakt zapisania hasła za pomocą md5", niż "co sprawia, że wygrywam prawie nic".
I, jako zdarzenie, można postawić inne pytanie: gdzie można pozwolić sobie na wydawanie środków na tego typu obliczenia? Jeśli masz 10 serwerów PHP i jeden serwer DB się już pod dużym obciążeniem, można uzyskać odpowiedź ;-)
Ale tylko dla zabawy:
mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (2.24 sec)
iw PHP:
$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
$a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";
daje:
$ php ~/developpement/tests/temp/temp.php
3.3341760635376
Ale prawdopodobnie nie będziecie obliczać miliona md5 w ten sposób, dobrze?
(i to nie ma nic wspólnego z zapobieganiem zastrzyki SQL: po prostu uciec/quote dane zawsze lub użyć sprawozdania przygotowanego!)
Gdy wszystko inne zawiedzie, przeprowadź eksperyment. – Rafe
, więc zaoszczędzisz w przybliżeniu jedną mikrosekundę, wykonując go w bazie danych, zamiast robić to w php. brzmi całkiem nieistotnie, ale ciekawy jest wiedzieć, – Kip
+1 za bardzo dokładną odpowiedź i ważny punkt o zastrzykach SQL :) – Draemon