Buduję witrynę dla fotografa, który przesyła zdjęcia, które zwykle są duże dla dzisiejszych aparatów cyfrowych. Obrazy zajmują dużo pamięci, zwłaszcza operacje na obrazie, takie jak tworzenie miniaturek.
Chciałem więc podnieść limit pamięci u administratora powyżej 256 MB - jak to zrobić? Pozwoliłem CGI i PHP używać do 1 gigabajta, ale wordpress zawsze zmniejsza pamięć do 256 MB. Masz pomysł, jak to naprawić po stronie klienta, który musi mieć możliwość automatycznej aktualizacji?
AKTUALIZACJA: Od trwającego Wordpress 3.2 maksymalny limit pamięci w Wordpress będzie można ponownie skonfigurować .
customization
admin
memory
hakre
źródło
źródło
Odpowiedzi:
Teoretycznie edytuj config.php i dodaj tę linię przed włączeniem wp-settings.php.
powinien zwiększyć limit pamięci dla WordPressa do 256 MB lub dowolnej ustawionej wartości. I to będzie działać na całej szerokości. Jednak, jak zauważył sorich87 , istnieje kilka funkcji, które zmienią to ustawienie z zakodowanym na stałe limitem 256 MB.
Hakować czy nie hakować
Trochę obaw o to,
WP_MEMORY_LIMIT
to jedno z najbardziej dziwnych ustawień WP, jakie spotkałem. jeśli zaznaczysz/wp-includes/default-constants.php
, znajdziesz to ustawienie:Nigdy nie zdaję sobie sprawy, że WP ustawi tak niskie domyślne użycie pamięci, dopóki nie znajdę tego w kodeksie WP:
Wyjaśnienie to ulżyło. Jednak użycie zakodowanego na
@ini_set('memory_limit', '256M');
stałe funkcji wykonywania WP, która wymaga więcej pamięci, nigdy nie jest wspomniane . W rzeczywistości nie znajduję wyjaśnienia na temat tego niejasnego zachowania z kodeksu WP. Ponieważ większość funkcji niezwiązanych z użytkownikiem nie jest ani udokumentowana, ani nie jest jasno wyjaśniona w kodzie.Chociaż to ustawienie działa dobrze w większości przypadków, sprawi, że te funkcje będą bezużyteczne na serwerze z niższym ustawieniem maksymalnej pamięci lub w twoim przypadku, większym wykorzystaniem pamięci.
Dopóki faceci WP nie naprawią tego, myślę, że jedynym rozwiązaniem jest modyfikacja rdzenia. Można znaleźć ten artykuł napisany przez hakre ciekawego do czytania. Przedstawił również zalecenie dotyczące łaty w Trac. Poprzedni link do pliku łatki może pomóc ci znaleźć listę funkcji korzystających z tego ustawienia.
edytować:
to jest najgłupsza odpowiedź, jaką kiedykolwiek dałem, ponieważ podam link do twojego postu (po prostu uświadom sobie, że nazwa OP była hakre po 2 dniach): D
edycja 2:
jak wspomniano w komentarzu, zostało to naprawione przez wydanie 3.2
źródło
Są jeszcze
@ini_set('memory_limit', '256M');
zanim obrazy zostaną załadowane do pamięci przez funkcje GD.imagecreatefromstring()
(wiersz 253, wp-obejmuje / media.php) jest używanywp_load_image()
przezimage_resize
(funkcja, w której przetwarzanie obrazów odbywa się w celu utworzenia miniatur). Limit pamięci znajduje się w linii 252, więc, o ile widzę, nie ma sposobu, aby go zmodyfikować bez zabicia kotka *> :).Istnieją również funkcje GD w
load_image_to_edit()
(wiersz 200, wp-admin / obejmuje / image-edit.php). Ten jest używany przez edytor zdjęć (nigdy go nie użyłem, ponieważ znam WordPressa, nawet nie wiedziałem, że go znajdę :)). Jeśli używa go Twój klient, możesz również ustawić limit pamięci. Jest filtrload_image_to_edit_path
.Mam nadzieję, że moja odpowiedź jest pomocna.
* rdzeń hakerski
źródło
WP_MEMORY_LIMIT
stały, a nawetadmin_memory_limit
filtr, ale w tych garstce przypadków nie ma potrzeby ich sprawdzania.Swill - miałem te same problemy. Cholerne wordpress z niektórymi „funkcjami”. Bardziej wyrafinowanym podejściem jest zmiana wszystkich @ini_set, aby ustawić je z WP_MEMORY_LIMIT - problem rozwiązany
Również zmiana wartości php w czasie wykonywania nie jest zbyt mądra, nie jestem pewien, dlaczego została zaimplementowana :(
źródło
Według twojego opisu myślę, że ten kod
admin.php
jest problemem:Nieco dziwne, że traktuje oddzielnie użycie pamięci administracyjnej, ale przynajmniej można je filtrować.
źródło
Chciałem tylko podziękować Bangbambang. To jest pierwszy post, który znalazłem, który był w stanie dać mi wgląd w to, dlaczego wpis do wp-config.php
define('WP_MEMORY_LIMIT', '512M');
nie był faktycznie używany. Spędziłem godziny próbując to rozgryźć ...Mój import nie powiódł się, ponieważ problem z wyczerpaniem 256 MB został wyczerpany niezależnie od tego, jak ustawiłem limit pamięci.
Oto miejsca, w których limit pamięci jest zakodowany na stałe do 256 MB (w każdym razie w wersji 3.0.5).
źródło
WP_MAX_MEMORY_LIMIT
.źródło