WP-Cache to bardzo przydatny plugin do Word Press’a. Plugin ten zapisuje każdą wygenerowaną stronę w postaci statycznego pliku HTML na serwerze przez co znacznie zmniejsza obciążenie serwera i bazy danych. Długość cache, jak i reguły opisujące pliki/strony, które mają być cache’owane można ustawić z poziomu panelu WP.
Ostatnio zetknąłem się z dwoma problemami w użytkowaniu tego plugina, poniżej rozwiązania:
Problem 1:
Za każdym razem, gdy strona generowana jest po raz pierwszy pojawia się komunikat w górze strony:
Warning: semget() failed for key 0x152b: Permission denied in /XXX/wp-content/plugins/wp-cache/wp-cache-phase2.php on line 98
Rozwiązanie:
Trzeba zedytować plik: wp-content/plugins/wp-cache/wp-cache-phase2.php w linii 98:
zamienić:
$mutex = sem_get($sem_id, 1, 0644 | IPC_CREAT, 1);
na
$mutex = @sem_get($sem_id, 1, 0644 | IPC_CREAT, 1);
Znak @ przed funkcją php blokuje komunikaty o błędach, spowodowanych daną funkcją.
Alternatywą tego rozwiązania jest dopisanie
ini_set( 'display_errors', 0 );
w pliku wp-config.php W tym wypadku zablokujemy wyświetlania się komunikatów o błędach globalnie w całym Word Press’ie.
Problem 2:
WP-Cache jest poprawnie zainstalowane, włączone, jednak strony się nie cache’ują.
Sprawdz czy w katalogu wp-content znajduje się plik
!advanced-cache.php
Jeżeli tak to oznacza, że WP-Cache ma źle podlinkowany plik wp-cache-phase1.php
Rozwiązanie:
Najpierw należy skasować plik !advanced-cache.php.
Następnie przypadku gdy mamy dostęp ssh trzeba z poziomu katalogu wp-content wykonać polecenie unix’owe, które stworzy link symboliczny do tego pliku wykorzystywany przez skrypty WP:
ln -s plugins/wp-cache/wp-cache-phase1.php advanced-cache.php
Gdy nie mamy ssh musimy zainstalować wtyczkę jeszcze raz (zdeaktywować i aktywować).