Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php APC与自定义Mmap扩展_Php_C - Fatal编程技术网

Php APC与自定义Mmap扩展

Php APC与自定义Mmap扩展,php,c,Php,C,好的,我正在做这个项目,它需要我在一个表上进行内存键值存储查找。我正在使用的业务规则还规定,必须从每个节点上的内存中读取该表,并且该表需要跨多个请求持久化 因此,显而易见的解决方案是将APC与APC_fetch()结合使用;和apc_store() 问题在于该表将由成千上万的键值对组成,大小将为几兆字节(运行该表的机器是内存庞然大物) 所以,如果APC在加载时对用户缓存进行序列化,我会对性能产生一些担忧 如果不是这样的话,这就不会有什么大不了的,那么它实际上是一个更好的解决方案 然而,如果不是这

好的,我正在做这个项目,它需要我在一个表上进行内存键值存储查找。我正在使用的业务规则还规定,必须从每个节点上的内存中读取该表,并且该表需要跨多个请求持久化

因此,显而易见的解决方案是将APC与APC_fetch()结合使用;和apc_store()

问题在于该表将由成千上万的键值对组成,大小将为几兆字节(运行该表的机器是内存庞然大物)

所以,如果APC在加载时对用户缓存进行序列化,我会对性能产生一些担忧

如果不是这样的话,这就不会有什么大不了的,那么它实际上是一个更好的解决方案

然而,如果不是这样,用C编写一个自定义扩展名,对保存到磁盘上的结构的排序文件进行二进制搜索,会是一个更好的选择吗

或者(希望如此)编写自定义扩展根本不值得

赢,输,快速思考


提前感谢

尽管APC将在加载时序列化,但通过
APC_fetch()
进行的实际查找是通过哈希表完成的,应该不会出现您描述的瓶颈。由于你的机器是内存巨兽,你应该考虑调整APC的表足够大,以将所有的键值对存储在内存中。这可以通过将php.ini中的
apc.user\u entries\u hint
设置为适用于您的应用程序的适当值来实现。

尝试查看
基本上,在linux上查看
tmpfs
,并将其用作具有任何规则的调节文件系统。在应用程序之外进行调试和检查也很容易。

我不太清楚,但APC可能会在压力下逐出缓存项。这是你需要考虑的事情——尽管如果你同意的话,我会研究MimcCurn。取而代之的不是我关心的瓶颈。序列化是我关心的瓶颈。几年前,我们也以类似的数量关闭了雅虎商店。当然,这些机器是内存庞然大物,但是,只有当您必须序列化每个请求的100k个键值对数据时,内存才能让您达到这一目的。这就是让我害怕的部分。