náhodně generovaný textový řetězec-efektivněji

neporadil by mě někdo jak efektivněji vygenerovat textový řetšzec obshující znaky a-z a 0-9 a zajistit jeho jedinečnost podle databáze generovaných řetšzců

já to zatim mam vymyšleny tak že fci random() vygeneruji nahodne čislo a fci krypt() to zakryptuji a sql overim jestli toento retezec jiz neexistuje

nezna nekdo neco efektivnejsiho?
myslim ze to lze povazavot za dostatecne.
staci to tak a je to dostatecne efektivni
Místo random() je lepší použít uniqid(), která generuje unikátní řetězce založené na čase.
to honza : dik
to Master (---.sbone.cz) tusil jsem ze to jde efektivneji
Slovo "efektivne" v programatorske sematice znamena "rychle".
Neni to totez jako slovo kvalitne!
navrh Honzy (---.gyrec.cz) je lychlejsi protoze nemusim vymeslet nahodne cisla a kriptovat ho mam uz rovnou retezec topro me znamena efaktivnejsi (rychlejsi) míisto dvou prikazu(f_ci) pouzit jeden
jenze pokud tvou aplikaci pouziva vice uzivatelu, je mozne, ze i kdyz to overis, tak mezi tim nez to zapises si stejny retezec vygeneruje jinu uzivatel a pak se tam zapisou stejne

takze bud nejak zamknout tabulku (nejsem si ted z hlavy jist jestli mysql umi), nebo proste pouzit k overeni databazi - pokud mas unikatni id kolonku v tabulce, a pokusis se vlozit zaznam s id ktery uz existuje, databaze ho nevlozi a vrati error, takze by slo napsat:


generuj retezec
dokud ne(pokud o vlozeni vygenerovaneho retezce selhal) {
generovat retezec
}

nebo prirozene to prepsat pomoci repeat/until

repeat
generuj retezec
until (vlozeni se nepovedlo)
...pokracuji
navi ve vetsine pripadu budes volat jen jednu sql funkci, coz muze byt rychlejsi nez jendou funkci zjistovat a pak dalsi funkci vkladat
to:
ja ptrebiji nejakY slozitejsi tretezec nez jen dve cislice id
tim id jsem myslel sloupec v databazi oznaceny jako primary key, typem to muze byt klidne libovolne dlouhy retezec
V MySQL se tabulky zamknout dají, takže to jde obojím.
2 Andrew: Jak?
flush tabels with read lock
;-) - coz ti na wz asi nepobezi, jinak:
lock table tbl_name
to by mohlo chodit, co?
mala pravdepodobnost ze se podari vygenerovat najdou dva upne stejne retezce (generovat tento retezec budu jen vyjmecne