Zmienne predefiniowane (globalne?) gdzie umieścić array?

0

Moja strona www często wykorzystuje dwie tablice (po 15 stringów zawartości każda). Średnio co 4 odświeżenia odwiedzając trafia na podstronę na której te stałe tablice są tworzone i używane. Są one stałe i właściwie mogłyby nie być niszczone po zakończeniu skryptu php tylko siedziec w jakichś stałych dostęnych globalnie dla wszystkich zapytań do strony index.php. Nie trzeba by wtedy tworzyc takiej tablicy za każdym razem. Wiem że są zmienne predefiniowane ale mają one swoje specyficzne przeznaczenie. czy jest jakaś zmienna którą mogę do tego użyć?

0

Ciężko powiedzieć, gdzie to umieścić w twoim przypadku nie widząc twojego kodu. Na pewno nie w tablicach superglobalnych. Domyślam się, że twój kod nie ma super architektury. Najsensowniej byłoby to umieścić w pliku konfiguracyjnym i pobierać to tam gdzie potrzebujesz ;).

Bardzo prosty przykład:

//config.php
<?php
    return array(
        'tablica1' => array('a', 'b', 'c'),
        'tablica2' => array('d', 'e', 'f')
    );
?>

//twoj_skrypt.php
<?php
$config = include 'config.php';

//tutaj cos z tym robisz
$config['tablica1'];
?>
0

Superarchitekrury nie używam.
Tylko czy użycie podstrony config.php załatwi sprawę i zapobiegnie niszczeniu tablic w pamięci ram po wykonaniu skryptu (jednego wywołania podstrony dla danego klienta)? Chodzi mi o to aby na stale działającym serwerze apache, dla wszystkich userów była dostępna ta sama tablica, raz stworzona przy pierwszym odpaleniu skrptu. To chyba byłoby najwydajniejsze, nie trzeba by jej powoływać za każdym razem na nowo.

0

słuchając Twojego opisu to brzmi to jakbyś szukał bazy danych i próbował koło na nowo wynaleźć

0

@Franky22: Nie ma tak. W żadnym "ramie" po wykonaniu skryptu nic nie zostaje (są wyjątki, ale o tym nie mówimy, bo i tak nie da się tego wykorzystać). Skrypt zaczyna działanie, potem kończy, tyle. Potem wszystko od nowa.

0

No właśnie tak przypuszczam że po wykonaniu skryptu dane są niszczone. Dlatego myślę o zmiennej globalnej dla całego serwera apache dostępnej w przez php która jest w panieci tak długo jak serwer jest włączony.
Odnośnie bazy to moja stronka cały czas korzysta z bazy (średnio 3 zapytania na jednej podstronie) i nie chcę generować dodatkowego zapytania żeby co kilka sekund wczytywać dokładnie ten sam zestaw stringów. Po co jak wystarczyło by go raz zapamiętać pod zmienną i udostępniać prosto z RAM'u bez obciążania procesora serwera kilkanaście razy na minutę tym samym zapytaniem.

0

Niestety tak dobrze nie ma. Z tego co mi wiadomo nie ma możliwości takiego ustawienia danych, aby były cały czas dostępne w pamięci. Bo i po co? Na odświeżaniu pamięci RAM procesor też traci sporo czasu. Jeśli nie chcesz się odwoływać co chwilę do bazy żeby wyciągać te same dane to użyć cache lub wynik zapisz w pliku. Przy następnym odświeżeniu dane będą wczytywane z cache / pliku i po problemie.

0

@freemp3:

Na odświeżaniu pamięci RAM procesor też traci sporo czasu

Tzn?

jak można inaczej cachować wyniki zapytań jak nie poprzez zapis do pliku? (tj. niby można do bazy, ale to trzeba mieć nieźle wolne zapytanie, żeby to miało sens)
Cachowanie wyniku do pliku ma sens, jeżeli on te dane bierze z bazy.

cache najlepiej wykonać w formacie podobnym do tego, co podał @gaUa69 - czyli w pliku php, który ustawia zmienne, nie coś, co trzeba parsować (żeby się nie okazało, że to tylko zwolni nasz kod, zamiast przyśpieszyć) - tu trzeba uważać, żeby nie zrobić potencjalnych dziur (wstawienie niechcianego kodu php)

@Franky22: a Ty przemyśl czy nie próbujesz robić czegoś takiego, jak przedwczesna optymalizacja. tracisz czas być może po to, żeby wymyślić rozwiązanie, które tylko pogorszy wydajność tego, co piszesz - to częste u początkujących. trzeba myśleć, żeby napisać w miarę optymalne rzeczy, ale optymalizacją zajmij się dopiero jak już będziesz wiedział, które elementy Twojego systemu są "wąskim gardłem" i wymagają interwencji

1 użytkowników online, w tym zalogowanych: 0, gości: 1