相关疑难解决方法(0)

shmop PHP扩展有什么作用?

http://www.php.net/manual/en/intro.shmop.php

Shmop是一组易于使用的函数,允许PHP读取,写入,创建和删除Unix共享内存段.

我不明白,这个扩展目的究竟是什么?它是干什么用的?

php shared-memory

13
推荐指数
2
解决办法
9086
查看次数

在脚本执行之间将PHP变量存储在内存中

如何在脚本执行之间,甚至在不同的会话之间,将变量保存在服务器的RAM中?我是否需要安装某种扩展,或者这是内置到PHP?

提前致谢!

php

8
推荐指数
1
解决办法
9141
查看次数

PHP中是否有一种方法可以像Java EE一样使用持久数据?(在PHP线程之间共享对象)没有session或cache/DB

在PHP中是否有一种方法可以使用"会话外"变量,这些变量不会在每个连接处加载/卸载,就像在Java服务器中一样?

请原谅我缺乏准确性,我不知道如何以正确的方式写它.

主要想法是这样的事情:

<?php
    ...
    // $variablesAlreadyLoaded is kind of "static" and shared between all PHP threads
    // No need to initialize/load/instantiate it.
    $myVar = $variablesAlreadyLoaded['aConstantValueForEveryone'];
    ...
?>
Run Code Online (Sandbox Code Playgroud)

我已经做过这样的使用shmop和其他奇怪的事情,但如果有一个"干净"的方式来做"纯PHP"而不使用缓存系统(我想到APC,Redis ......),也没有数据库.

编辑1:

由于人们(感谢他们花时间陪我)以同样的方式回答我的会话,我添加了一个我错过了写的约束:没有会话请.

编辑2:

似乎唯一的PHP本机方法是共享内存(shmop)和命名管道.我将使用托管方式访问共享对象,不介意内存管理(共享内存块大小)或系统问题(管道).

然后,我在网上浏览了一个PHP模块/库,它提供了执行此操作的函数/方法:我什么也没找到.

编辑3:

后在路上的几个研究中指出@KFO,看来该putenv/ setenv不作出处理对象(我会避免序列化).因此,它解决了诸如字符串或数字之类的短"事物"的问题,但不解决更大的/ comples对象的问题.

使用"env way"和另一种处理更大对象的方法将是不相干的,并增加了代码和维护的复杂性.

编辑4:

发现这个:DBus(GREE Lab DBus),但我没有工具在工作中测试它.有人测试了吗?

我对每一个建议持开放态度.

谢谢

编辑5("答案"):

由于DBus不是我正在寻找的(需要安装第三方模块,没有"严重"的应用证据),我现在正在使用已经证明其可靠性的Memcache(关注@PeterM评论,见下文).

php persistence share shared-memory inter-process-communicat

8
推荐指数
2
解决办法
4626
查看次数

如何在PHP中的HTTP请求之间共享内存?

我正在尝试实现一个非常非常大的字典搜索来匹配PHP中句子中的单词.我最初的想法是使用Aho-corasick算法,因为Aho-corasick解决了我的确切问题.我首先用PHP实现了一个Trie.Trie在缓存时会生成一个足够快的字典; 但是,它占用大约3mb的内存.这在PHP中无法很好地扩展.

显然,无论我们使用何种数据结构,大型字典都会占用大量内存.我只需要单个字典实例,因为它是静态的,不需要重建.

如果这个对象可以在所有线程之间共享,那么3mb的内存可以忽略不计,但是,我不确定在PHP中的线程之间共享内存的正确方法.

如何在HTTP请求之间共享此对象?当每个线程需要由Trie创建的3mb开销时,我看不到项目缩放.

php shared-memory

5
推荐指数
1
解决办法
1102
查看次数