|
Posted by Mikhail Kovalev on 09/08/07 20:57
On 8 Sep, 22:42, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> 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.
>
Theyre not, the file to be included is a collection of 10 functions. A
separate data file is loaded in a variable by a line of code from this
script, ie when this file is run (or included in this case)
[Back to original message]
|