2013-06-28 10 views
28

PHP 5.5 zawiera domyślnie zend opcache, co oznacza, że ​​prawie nikt nie użyje APC.Czego używać zamiast pamięci podręcznej użytkownika apc w php 5.5?

Ale co używać zamiast części pamięci podręcznej danych użytkownika APC (apc_store & apc_fetch &)?

Jeden przypadek, w którym naprawdę lubię używać pamięci podręcznej danych użytkownika APC, to "wersje" zasobów statycznych (javascript, css ..). Ilekroć odwołuję się do pliku statycznego, dodaję jego zawartość do adresu URL (np. < skrypt src =/script.js > stanie się < skryptem src =/script.js? V = hash >), więc przeglądarka zawsze używa aktualnej wersji i może buforować go na stałe.

Mogę sobie wyobrazić użycie redis lub memcache do przechowywania skrótów plików statycznych, ale wydaje się głupie, aby poprosić o inny proces za pośrednictwem sieci lub gniazda tylko po to, aby uzyskać skrót zawartości pliku. Cache danych użytkownika APC (która jest w pamięci współdzielonej i uzyskuje do niej dostęp jest prawie tak szybka, jak dostęp do zmiennej php) wydaje się być odpowiednią rzeczą do wykorzystania dla takich danych.

Pytanie brzmi: czego używać w PHP 5.5 do buforowania małych bitów danych zamiast APC?

+8

Użyj APCu, który jest tylko częścią pamięci podręcznej użytkownika APC. – NikiC

Odpowiedz

28

Począwszy od PHP 5.5 dane użytkownika APC są zapakowane osobno jako PECL APCu. Kod

Umożliwia to używanie all user cache functions, takich jak apc_store(). Zwróci także true dla extension_loaded('apc') - oznacza to, że wszystkie biblioteki zależne od APC będą działać podobnie do PHP 5.4.

+0

yum zainstalować php5-pecl-apcu -> brak dostępnych pakietów – Flion

+1

@FlyOn masz rację. Dzięki! Poprawiłem nazwę pakietu dla Fedory/Redhat ... –

+1

Dziękuję! Użyłbym opcache, ale repozytorium, nad którym pracuję, potrzebuje apc. Life Saver tutaj. –

6

ja niedawno zajmował się tym zagadnieniem po uaktualnieniu z PHP 5.3 do php 5.5 beta 2.

Spojrzałem na Memcache i Redis. W zależności od tego, kogo zapytasz, wydajność między nimi jest w przybliżeniu taka sama. Niektórzy twierdzą, że Redis jest nieznacznie szybszy. Jednak Redis ma o wiele więcej funkcji niż Memcahe, więc zdecydowałem się pójść z Redis.

Dla klienta PHP wybrałem Phpredis na Predis. Phpredis jest rozszerzeniem C, podczas gdy Predis jest czystą implementacją PHP. Tak więc, Phpredis jest generalnie szybszy.

Używam głównie Redis do buforowania i pobierania serializowanych obiektów. Rozpocząłem projekt, który obecnie rozwijam w PHP 5.3 z APC. Nadal rozwijam projekt za pomocą php 5.5 i Redis. Chociaż nie mam statystyk wydajności, mogę powiedzieć, że aplikacja "czuje się" szybciej. Jest to prawdopodobnie spowodowane ulepszeniem wydajności w PHP 5.5, w przeciwieństwie do wersetu podręcznego użytkownika APC Redis. Tak czy inaczej, jestem zadowolony z mojego wyboru.

Mam nadzieję, że to pomaga. Powodzenia i szczęśliwego hackowania :-)

-1

Zobacz cache XCache od autorów lighttpd. Obsługuje zarówno php 5.5, jak i pamięć podręczną danych użytkownika: http://xcache.lighttpd.net/wiki/XcacheApi

Nie próbowałem tego sam (nadal używając APC i php 5.4).

+0

Co jest nie tak z sugestią XCache? – DamirR

0

Nic więcej do powiedzenia. Masz już poprawną odpowiedź. I guesy mogę zapewnić was z linkiem do samouczka, aby jak pobrać i zainstalować APCu na XAMPP na Windows dla PHP 5.5 i 5.6:

link pobieraj APCu dla php budować od 5.3 i wyższej: download APCu different versions

Tutorial

Montaż:instalatioiin instrucions (Nowa wersja powinna znajdować się na samym dole listy plików - użyć tego jednego)

również pamiętać, że trzeba będzie dwa do wyboru kilka opcji jak 64 lub 84 wersja jak NTS lub ts i VC9 lub vc11 (może być inna w Twoim przypadku) i oczywiście wersja corect php (w moim przypadku byłoby PHP 5.6 dla mojego xampp).

PRZYKŁAD:

jeśli chcesz odebrać prawo trzeba uruchomić phpinfo() pierwsza i sprawdzenia tych parametrów:

Zend Extension Budowanie i Architecture

W mój przypadek to:

[Zend Extension Build:] API220131226,TS,VC11 

[Architecture:] x86 

To znaczy, że w moim przypadku musiałbym wybierać ACLU wchich zawierać w nazwie pliku te parametry 5.6, TS, VC11, 86

nazwa pliku do pobrania: php_apcu-4.0. 7-5.6-ts-vc11-x86.zip

Mam nadzieję, że to dla ciebie jasne.


Niektóre DODATKOWE wyjaśnień dotyczących różnych PHP wersjach:

różnica TS vs nc: TS oznacza wielowątkowych stanie budowli. NTS odnosi się do buildów pojedynczego wątku. Przypadek użycia dla plików binarnych TS obejmuje interakcję z wielowątkowym SAPI i PHP załadowanym jako moduł do serwera WWW. W przypadku plików binarnych NTS powszechnym przypadkiem użycia jest interakcja z serwerem WWW za pośrednictwem protokołu FastCGI, bez użycia wielowątkowości (ale także na przykład CLI).

różnica VC9 vs vc11 vs vc14: Nowsze wersje PHP są zbudowane z VC9, VC11 lub VC14 (Visual Studio 2008, 2012 lub 2015 kompilatora odpowiednio) i obejmują poprawę wydajności i stabilności.

  • VC9 buduje wymaga posiadania Visual C++ Redistributable dla Visual Studio 2008 x86 SP1 lub x64 zainstalowany
  • VC11 buduje wymagać, aby mieć Visual C++ Redistributable dla Visual Studio 2012 x86 lub x64 zainstalowany
  • VC14 buduje wymagać, aby mieć Visual C++ Redistributable dla Visual Studio 2015 x86 lub x64 zainstalowany

różnica 86 vs 64: x64 buduje PHP za wiatrem wiersze powinny być uważane za eksperymentalne i nie zapewniają jeszcze obsługi 64-bitowej liczby całkowitej lub dużych plików.

Powiązane problemy