php - 如何为字符串/文件名创建一个组?

标签 php algorithm hash amazon-web-services amazon-cloudfront

好的,我是 stackoverflow 的新手。

开发一个电子商务网站,我在主页上有多达 50 张不同的图片需要加载。我为我的图像使用 Amazon CDN,所有这些文件都在一个具有唯一域的存储桶中。

我想将多个域映射到此存储桶。然而,对于每张图片,我应该能够在运行时找到它上次服务于哪个域,以便缓存得到最优化。我的想法是有一个函数 func(filename) ,它可以每次为相同的文件名返回 0-9 之间的值。这可以用于域名。

我不希望 func 像散列一样非常重,在这种情况下,我希望发生冲突而不是避免冲突。

一个简单的方法是使用 intval(filename) 然后使用最低有效位。但是,我不确定这是否是一个好的解决方案,也不确定价差是否平衡。

有什么建议吗?

最佳答案

像这样简单的事情怎么样:

function customHash($str) {
    $hash = 0;

    for ($i = 0; $i < strlen($str); $i++) {
        $hash += ord($str[$i]);
    }

    return $hash % 10;
}

您可以通过多种方式对其进行优化,例如使用 iconv_strlen() 正确处理 utf-8 字符串而不是整个长度,$len = max(6, $strlen); 可以是使用(虽然性能提升并不显着...)。

关于php - 如何为字符串/文件名创建一个组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556162/

相关文章:

php - 查找前 5 条记录的 Eloquent 查询

php - 是否可以仅选择至少存在一个值的列?

algorithm - Datagridview 中的 VLookup (VB.NET)

java - 更好的股票代码 hashCode 函数?

javascript - 如何防止网站外的 API 调用

php - 通过 PHP 检索网站源的最有效方法? (获取请求)

algorithm - 编译器和语言的选择会影响时间复杂度吗?

algorithm - 基于 Trie 的地址簿和按姓名和联系电话高效搜索

arrays - 哈希表与排序数组 - 使用哪个?

hash - 哈希在编程中是如何工作的?