Czy w PHP istnieje sposób na używanie trwałych danych tak jak w Java EE? (udostępnianie obiektów między wątkami PHP) bez sesji ani pamięci podręcznej / DB
Czy w PHP istnieje sposób na użycie zmiennych „poza sesją”, które nie byłyby ładowane / rozładowywane w każdym połączeniu, jak na serwerze Java?
Przepraszam za brak dokładności, nie wiem, jak napisać to w odpowiedni sposób.
Główną ideą byłoby mieć coś takiego:
<?php
...
// $variablesAlreadyLoaded is kind of "static" and shared between all PHP threads
// No need to initialize/load/instantiate it.
$myVar = $variablesAlreadyLoaded['aConstantValueForEveryone'];
...
?>
Użyłem już takich rzeczyshmop
i inne dziwne rzeczy, ale jeśli istnieje „czysty” sposób na zrobienie tego w „czystym PHP” bez użycia systemów buforujących (myślę o APC, Redis ...), ani bazy danych.
EDYTUJ 1:
Ponieważ ludzie (dzięki temu, że spędzili dla mnie trochę czasu) odpowiadają mi w ten sam sposób na sesje, dodaję ograniczenie, którego nie mogłem napisać: żadnych sesji proszę.
EDYCJA 2:
Wydaje się, że jedynymi rodzimymi metodami PHP do zrobienia czegoś takiego są pamięć współdzielona (shmop
) i nazwane potoki. Używałbym zarządzanego sposobu dostępu do współdzielonych obiektów, bez względu na zarządzanie pamięcią (rozmiar bloku pamięci współdzielonej) ani problemy systemowe (potoki).
Następnie przejrzałem sieć w poszukiwaniu modułu / biblioteki PHP, która udostępnia funkcje / metody do tego celu: nic nie znalazłem.
EDYCJA 3:
Po kilku badaniach przeprowadzonych na @KFO wydaje się, żeputenv
/ setenv
nie są stworzone do radzenia sobie z obiektami (i uniknę serializacji). W ten sposób rozwiązuje problem w przypadku krótkich „rzeczy”, takich jak łańcuchy lub liczby, ale nie w przypadku większych / kompilowanych obiektów.
Użycie „drogi env” I innej metody radzenia sobie z większymi obiektami byłoby niekoherentne i zwiększyłoby złożoność kodu i możliwość utrzymania.
EDYTUJ 4:
Znaleziono to: DBus (GREE Lab DBus), ale nie mam narzędzi do testowania go w pracy. Czy ktoś jeszcze to przetestował?
Jestem otwarty na każdą sugestię.
Dzięki
EDYTUJ 5 („ODPOWIEDŹ”):
Ponieważ DBus nie jest dokładnie tym, czego szukam (wymaga zainstalowania modułu innej firmy, bez „poważnych” dowodów aplikacji), teraz używam Memcache, który już udowodnił swoją niezawodność (po komentarzu @PeterM, patrz poniżej) ).