当前位置:  开发笔记 > 编程语言 > 正文

使用星号PHP脚本匹配电话前缀的最快方法

如何解决《使用星号PHP脚本匹配电话前缀的最快方法》经验,为你挑选了0个好方法。

并提前感谢您的帮助.

背景 - 我正在编写一个PHP脚本,需要找出调用者试图达到的目的地.电话号码前缀是标识目的地的字符串.对于每个调用,程序必须找到与字符串匹配的最长前缀.例如,数字30561234567将匹配305但不匹配3057或304.如果存在3056,则它将是首选匹配.

在研究了几个数据结构之后,每个节点存储一个数字并包含指向其他10个可能选择的指针的树似乎是理想的.这可以实现为一个数组数组,其中脚本可以检查3,在那里找到一个数组,然后在该新数组上检查0,找到另一个数组,依此类推,直到找到一个值而不是数组.该值将是目标ID(脚本的输出).

要求 - 性能绝对至关重要.检查这些前缀所花费的时间会延迟调用,并且每个服务器都必须处理大量调用,因此数据结构必须存储在内存中.目前大约有6000个前缀.

问题 - 每次服务器收到呼叫时都会运行脚本,因此数据必须保存在某种缓存服务器中.在检查了memcached和APC(高级PHP缓存)后,我决定使用APC,因为它[更快] [3](它是一个本地内存存储)

我遇到的问题是数组数组最多可以变成10个数组,并且将是一个非常复杂的数据结构,如果我作为对象添加到缓存中,将需要很长时间来反序列化.

但是,如果我将每个单独的数组分别添加到缓存中(使用一些逻辑命名结构可以很容易地找到它,就像数组3中的3一样,那么30代表数组30,305代表该补丁后面的数组等...)I将不得不从缓存中多次获取不同的数组(每次调用最多10个),这让我经常点击缓存.

我是以正确的方式来做这件事的吗?也许有另一种解决方案?或者我提议的方法之一优于另一方法?

谢谢你输入,

亚历克斯

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有