仅加载一次资源,但每次请求都可以使用它们

时间:2011-09-10 14:20:51

标签: php

我有一些带有一些数组的php文件:

<?php
return array (
    'some' => 500,
    'some2' => 500,
    'description' => 'Bla bla bla',
    'langs' => 
    array (
        1 => 'php',
        2 => 'java',
    ),
    'users' => 
    array (
        2 => 
        array (
            'x' => 3435,
            'y' => 3852,
            'z' => 6,
        ),
        1 => 
        array (
            'x' => 1700,
            'y' => 1070,
            'z' => 733,
        ),
    ),
);

问题是这个文件真的很大 - 我尝试过memcache,apc等,但加载页面(在localhost上)需要大约10秒钟。 所以这是我的问题。是否可以在此文件中使数组可访问但不在每次页面请求时加载它?把它作为全球或什么? 我知道这是因为php本身的特性,所以如果可以使用其他一些网络语言来完成,我已经准备好学习它而不是用PHP来打扰。

3 个答案:

答案 0 :(得分:1)

APC是一种可行的方式 如果它失败了你 - 那么你做错了什么。是时候再试一次。

此外,在代码中存储大量数据只是一个废话 找到一个可靠的存储空间并使用它而不是这个愚蠢的PHP代码。

答案 1 :(得分:0)

由于PHP的工作方式,不,不是真的 - 每个请求调用一个单独的PHP进程来生成该请求的响应,因此不涉及某种其他持久的外部进程,您需要加载结构每次由于流程一般不共享资源。

是否可以将此数据移动到单独的进程并执行您需要的任何数据查找而无需在PHP中实际创建数据结构? (例如,将其存储在数据库中并运行查询,或将其存储在接受RPC请求的轻量级自定义应用程序中等?)

你真的需要构建如此庞大的PHP对象数据结构吗?您是将所有这些数据发送给客户端,还是只是从中查找特定项目?关于这些数据到底是什么,它用于什么以及为什么它必须如此大的更多细节将有助于我们提供进一步的建议。

答案 2 :(得分:0)

就php而言,除非你将它包含在每个页面中,否则它是不可能的,但为什么不制作API并确保只需要你需要的变量?这样就更容易加载页面(我假设数组是从数据库中提取的,考虑到它的大小)。