我正在编写简单的搜索引擎(使用向量模型(,我有一个带索引的大文本文件。在我的应用程序中,我必须加载文件并将其转换为数组
此时,我在每个页面中创建新的类实例,它将这个文件加载到数组中。
我可以只加载这个数组一次(一开始(,然后使用加载的数组吗?我想它是写在RAM中的?
简短回答;对
有几个选项可以使用。PHP有一个名为APC 的库
你可以这样做。。。
apc_store和apc_fetch
<?php
$bar = 'BAR';
// store variable $bar in memory for 1 hour with key 'foo'
apc_store('foo', $bar, 3600);
var_dump(apc_fetch('foo'));
?>
下面是一个适当的用例示例:
这会自动处理过期的缓存并重新加载缓存
<?php
// Config?
define('CACHE_LIFESPAN', 3600); // 1 Hour
// Helper Function
function loadXYZData() {
$result = @apc_fetch(__FUNCTION__);
if (!$result) {
$result = array('a' => 'b', 'c' => 'd'); // dummy data
@apc_store(__FUNCTION__, $result, CACHE_LIFESPAN);
}
return $result;
}
// Usage - through out all your scripts
$myXYZData = loadXYZData();
var_dump($myXYZData);
?>
在这里,APC缓存使用函数名称作为缓存密钥。因此,您将在应用程序中为每个可缓存数据创建一个类似于上面的函数。
以上脚本的输出为:
array (size=2)
'a' => string 'b' (length=1)
'c' => string 'd' (length=1)
除了APC,还有第三方键值对存储引擎(内存中(,如Memcached:http://www.php.net/manual/en/book.memcached.php
如果你环顾四周,还有其他人。