|
Posted by Jerry Stuckle on 09/08/07 20:42
Mikhail Kovalev wrote:
> On 8 Sep, 22:05, Jerry Stuckle <jstuck...@attglobal.net> wrote:
>> Mikhail Kovalev wrote:
>>> On 8 Sep, 21:12, Mikhail Kovalev <mikhail_kova...@mail.ru> wrote:
>>>> On 8 Sep, 20:49, "Rik Wasmus" <luiheidsgoe...@hotmail.com> wrote:
>>>>> On Sat, 08 Sep 2007 19:33:44 +0200, Mikhail Kovalev
>>>>> <mikhail_kova...@mail.ru> wrote:
>>>>>> Hi all,
>>>>>> I have a file which is to be included in another script and which
>>>>>> takes several seconds to load(!), and which is actually not always
>>>>>> used by the script, so instead of using include or include_once in the
>>>>>> beginning, i'm using include_once() within a function, which is called
>>>>>> on demand...
>>>>>> The problem is the new data has the scope of the function, and when
>>>>>> the same function is called again, the data is lost....
>>>>> Well, you could assign it to static variable(s) in your function.
>>>>> function foo(){
>>>>> static $cache;
>>>>> if(!$cache){
>>>>> $cache = include('/path/to/file'); //let the include file return the
>>>>> variables
>>>>> }
>>>>> return $cache;
>>>>> }
>>>>> --
>>>>> Rik Wasmus
>>>> return $cache?
>>>> My function returns something else...
>>>> Mmm, doesn't seem to work even with the return part.
>>>> The functions from the included file are preserved, but the variables
>>>> which are declared in that file are lost. Ive tried declaring them
>>>> static directly inside the included file, but with no luck.....
>>>> Btw, the function in question here is called from another function...
>>> I guess what I'm looking for is how to make "once-included" variables
>>> global from inside the function....
>> That's exactly what Rik was telling you.
>>
>> Whether you include a file or not is immaterial. A static variable
>> within a function will keep its value between invocation; a non-static
>> variable will not.
>>
>> But the real question is - why does it take several seconds to load?
>> I've never had a PHP file take that long!
>
>
> It loads a 1,8 MB array stored as serialized in a file....=)
>
> This is not something i do for web
>
Definitely not the best implementation. In fact, probably the worse
implementation!
For one thing, the data should not be in the same file as the functions.
And if you need the data, you should read it in.
And Micha is correct - you should be using a database instead.
Don't screw up your code even more due to a lousy implementation.
Rather, fix the implementation.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|