PHP中有没有办法使用“会话外”变量,这些变量不会像Java服务器一样在每个连接处加载/卸载?
请原谅我缺乏准确性,我不知道如何以正确的方式编写它。
主要想法是有这样的东西:
<?php
...
// $variablesAlreadyLoaded is kind of "static" and shared between all PHP threads
// No need to initialize/load/instantiate it.
$myVar = $variablesAlreadyLoaded['aConstantValueForEveryone'];
...
?>
我已经使用shmop
和其他奇怪的东西做了这样的事情,但是如果在“纯 PHP”中有一种“干净”的方法可以在不使用缓存系统(我认为 APC、Redis ...)或数据库的情况下做到这一点。
编辑 1:
由于人们(感谢他们为我花时间)以同样的方式回答我的会话,我添加了一个我错过写的约束:请不要会话。
编辑 2:
似乎唯一能做这种事情的 PHP 本地方法是共享内存 ( shmop
) 和命名管道。我会使用托管方式来访问共享对象,而不考虑内存管理(共享内存块大小)或系统问题(管道)。
然后,我在网上浏览了一个 PHP 模块/库,它提供了执行此操作的函数/方法:我什么也没找到。
编辑 3:
在对@KFO 指出的方式进行了一些研究之后,似乎putenv
/setenv
不是用来处理对象的(我会避免序列化)。因此,它解决了诸如字符串或数字之类的短“事物”的问题,但不适用于更大/更复杂的对象。
使用“env 方式”和另一种方法来处理更大的对象将是不连贯的,并且会增加代码的复杂性和可维护性。
编辑 4:
找到了这个:DBus(GREE Lab DBus),但我没有工具可以在工作中测试它。有人测试过吗?
我对每一个建议都持开放态度。
谢谢
编辑5(“答案”):
由于 DBus 并不是我想要的(需要安装第三方模块,没有“严重”的应用证据),我现在使用的 Memcache 已经证明了它的可靠性(在@PeterM 评论之后,见下文)。