gpt4 book ai didi

php - 创建你自己的 TinyURL

转载 作者:可可西里 更新时间:2023-11-01 07:10:00 27 4
gpt4 key购买 nike

我刚找到这个 great tutorial,因为它是我需要的东西。

但是,看了之后,似乎这可能是低效的。它的工作方式是,首先生成一个唯一键,然后检查它是否存在于数据库中以确保它确实是唯一的。然而,数据库越大,函数越慢,对吧?

相反,我在想,有没有办法向这个函数添加排序?所以所有要做的就是检查数据库中的先前条目并增加 key 。所以它永远是独一无二的?

function generate_chars()

{

$num_chars = 4; //max length of random chars
$i = 0;
$my_keys = "123456789abcdefghijklmnopqrstuvwxyz"; //keys to be chosen from
$keys_length = strlen($my_keys);
$url = "";
while($i<$num_chars)
{
$rand_num = mt_rand(1, $keys_length-1);
$url .= $my_keys[$rand_num];
$i++;
}
return $url;
}

function isUnique($chars)

{
//check the uniqueness of the chars
global $link;
$q = "SELECT * FROM `urls` WHERE `unique_chars`='".$chars."'";
$r = mysql_query($q, $link);
//echo mysql_num_rows($r); die();
if( mysql_num_rows($r)>0 ):
return false;
else:
return true;
endif;
}

最佳答案

小 url 人们喜欢使用随机标记,因为这样你就不能只控制小 url 链接。 “#2去哪儿了?” “哦,酷!” “#3 去哪儿了?” “更酷!”您可以输入随机字符,但不太可能输入有效值。

因为键相当稀疏(4 个值,每个值有 36* 种可能性给你 1,679,616 个唯一值,5 给你 60,466,176)冲突的机会很小(实际上,这是设计的理想部分)和一个很好的 SQL 索引将使查找变得微不足道(实际上,这是对 url 的主要查找,因此他们会围绕它进行优化)。

如果您真的想避免查找而只是取消自动递增,您可以创建一个函数,将整数转换为看似随机的字符串,并能够转换回来。所以“1”变成“54jcdn”,“2”变成“pqmw21”。类似于 Base64 编码,但不使用连续字符。

(*) 实际上我喜欢使用少于 36 个字符——单大小写,没有元音,也没有相似的字符(1、l、I)。这可以防止意外的脏话,也可以让某人更容易向其他人说出值(value)。我什至将相似的字符映射到彼此,接受“0”作为“O”。如果您完全基于机器,则可以使用大写和小写以及所有数字以获得更大的可能性。

关于php - 创建你自己的 TinyURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com