我有以下形式的1000个网址:
http://www.downloadformsindia.com/index.php?option=com_download&e=n&task=showpage&file=Forms%252Fmisc%252Ficc%252Fhdfcbank%252FBlocking%20ATM%20and%20Debit%20Card%20Form.pdf&title=HDFC%3ABlocking%2BATM%2B%26%2BDebit%2BCard%2BForm&code=igi
对于我想要存储相关面包屑的每个网址。因此,每当访问这样的URL时,我都会显示它的痕迹。
所以我想要一张地图来存储带有面包屑的网址。 URL将是哈希键。
我的问题是我没有使用PHP,只能使用C ++ / Java或Perl。 我想在php变量中包含一个包含1万个这样的值的哈希值,我将它序列化以将其永久存储在磁盘上。 对于每个页面加载,我会动态创建存储的哈希变量,并搜索url作为哈希的键。 它应该很快。我不确定PHP哈希是否使用树图或哈希图。好的,如果我选择哈希地图,我如何均匀地分配网址作为密钥,以便所有网址都进入单个存储区?
欢迎任何想法。
答案 0 :(得分:1)
您可以尝试使用简单的关联数组。 PHP本身允许使用字符串作为数组索引。我不确定底层数据结构,但你总是可以对它进行基准测试。
答案 1 :(得分:1)
PHP的关联数组是哈希表(哈希映射)。
他们接受任何字符串作为键,因此您可以直接使用URL作为键。
你可以创建一个数组并像这样分配它:
$data = array();
$data[$url] = $data_for_this_url;
并使用serialize()
甚至var_export()
导出它(后者可能更快导入,尤其是使用操作码缓存)。
这是一个哈希表,因此键被散列为均匀分布在表中。该表根据需要增长以避免过多的冲突。你不需要照顾这个。
答案 2 :(得分:0)
如果您想在此处使用数据结构以获得更快的输出,则可以将php与redis
一起使用。您可以查看以下扩展名。
https://github.com/phpredis/phpredis
希望这会帮助你。