2011-05-03 91 views
0

是否有可能将php变量存储在某种缓存中,因此它们只需要生成一次,但每个网页都可用? Wihtout使用POST,GET,COOKIES或SESSIONS在页面之间缓存PHP变量

我有堆的URL存储为变量,我想保持方便。

我知道缓存HTML,但id喜欢以某种方式缓存PHP变量。不确定是否有解决方案?

+3

APC和memcache都适合这一点。 – 2011-05-03 02:21:40

+0

[PHP中的缓存变量]可能的重复(http://stackoverflow.com/questions/5659574/caching-variables-in-php) – 2011-05-03 02:22:20

+2

只是为了澄清一下,你希望它们每次访问一次,每次生成一次-boot,或者为所有访问者生成一次以便永久使用?我假设你知道,如果只是共享定义的情况下,你可以在所有页面中包含一个公共文件。 – 2011-05-03 02:28:21

回答

1

我使用PHP堆栈的zend-server实现。即使是社区版随附:

zend_shm_cache_fetch(); 
zend_shm_cache_store(); 
zend_disk_cache_fetch(); 
zend_disk_cache_store(); 

事情在这些变量设定住整个脚本执行,并在创建时指定超时清理后投案自首。

复数变量是允许的,所以你可以存储关联数组等,而不需要先编码它们。

我广泛使用它们。
shm方法可以存储和检索0.0005秒范围内的32k块。

要存储$结果变量的内容在缓存命名等等,用120秒的超时:

zend_shm_cache_store('blah',$results,120); 

稍后检索的$结果内容:

$results = zend_shm_cache_fetch('blah'); 
if ($results === false) { # It expired, or never existed.. 

的Zend关于此的文档:http://files.zend.com/help/Zend-Platform/zend_cache_functions.htm

您可以调高您在zend服务器控制台中的空间量。我认为它默认为32mb。我有我的256mb。您可能需要重新启动或清除您的共享内存段,以使更大的空间实际工作。尽管如此,它变得更慢了。如果你存储大量的数据而不是小的单独引用的位,但是ymmv,它似乎更快。

+0

看起来不错!你能指出一些对你有帮助的教程吗,或者给我一个例子吗? – user735354 2011-05-03 02:46:38