小编Lic*_*say的帖子

URL缩短:使用inode作为短名称?

我正在开发的网站希望生成自己缩短的网址,而不是依赖像tinyurl或bit.ly这样的第三方.

显然,我可以保留一个新的URL,因为它们被添加到站点并使用它来生成短URL.但是我试图避免这种情况,如果可能的话,因为看起来很多工作只是为了使这一件事成功.

由于需要短URL的东西都是网络服务器上的真实物理文件,我目前的解决方案是使用他们的inode编号,因为这些编号已经为我准备好使用并保证是唯一的.

function short_name($file) {
   $ino = @fileinode($file);
   $s = base_convert($ino, 10, 36);
   return $s;
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效.问题是,我该怎么做才能缩短短网址?

在使用它的系统上,新添加文件的inode在一个范围内,使上面的函数返回一个长度为7个字符的字符串.

我可以安全地扔掉一些(一半?)的inode位吗?如果是这样,它应该是高位还是低位?

我想过使用文件名的crc32,但实际上我的短名称比使用inode更长.

这样的事情有没有碰撞的风险?通过选择"$ referencefile"的正确值,我已经能够达到个位数.

function short_name($file) {
   $ino = @fileinode($file);
   // arbitrarily selected pre-existing file,
   // as all newer files will have higher inodes
   $ino = $ino - @fileinode($referencefile);
   $s = base_convert($ino, 10, 36);
   return $s;
}
Run Code Online (Sandbox Code Playgroud)

php url url-shortener short-url

0
推荐指数
1
解决办法
842
查看次数

标签 统计

php ×1

short-url ×1

url ×1

url-shortener ×1