Estou construindo um site para um fotógrafo que envia fotos normalmente grandes para as câmeras digitais de hoje. As imagens consomem muita memória, especialmente as operações de imagem, como a criação de miniaturas.
Então, eu queria aumentar o limite de memória no administrador acima de 256 MB - como isso pode ser feito? Eu permiti que CGI e PHP usassem até 1 Gigabyte, mas o wordpress sempre diminui a memória para 256 MB. Alguma idéia de como corrigir isso no lado do cliente que precisa ser capaz de atualizar automaticamente?
ATUALIZAÇÃO: No Wordpress 3.2 em andamento, o limite máximo de memória no Wordpress poderá ser configurado novamente .
customization
admin
memory
hakre
fonte
fonte
Respostas:
Teoricamente, edite seu config.php e adicione esta linha antes da inclusão do wp-settings.php.
deve aumentar o limite de memória do WordPress para 256 MB ou o valor que você definir. E isso funcionará em todo o site. No entanto, como sorich87 apontou , existem poucas funções que alterarão essa configuração com um limite de 256 MB codificado.
Para hackear ou não hackear
Um pouco de preocupação com isso,
WP_MEMORY_LIMIT
é uma das configurações WP mais estranhas que já encontrei. se você verificar,/wp-includes/default-constants.php
encontrará esta configuração:Eu nunca percebi que o WP definirá seu uso de memória padrão tão baixo, até encontrar isso no codex WP:
Essa explicação foi aliviante. No entanto, o uso da
@ini_set('memory_limit', '256M');
função de execução WP sempre codificada sempre que precisar de mais memória nunca é mencionado . De fato, não encontro nenhuma explicação sobre esse comportamento vago do WP codex. Como a maioria das funções não relacionadas ao usuário não é documentada ou não é explicada claramente no codex.Embora essa configuração funcione bem na maioria dos casos, ela tornará essas funções inúteis no servidor com configuração de memória máxima mais baixa ou, no seu caso, maior uso de memória.
Até que o pessoal do WP conserte isso, acho que sua única solução é modificar o núcleo. Você pode achar este post escrito por hakre interessante de ler. Ele também enviou uma recomendação de patch no Trac. O link anterior para o arquivo de correção pode ajudá-lo a encontrar a lista de funções que usam essa configuração.
editar:
esta é a resposta mais estúpida que já dei, porque dou um link para o seu próprio post (apenas perceba que o nome do OP foi hakre após 2 dias): D
editar 2:
como mencionado no comentário, isso foi corrigido pela versão 3.2
fonte
Há
@ini_set('memory_limit', '256M');
antes de as imagens são carregadas na memória por funções GD.imagecreatefromstring()
(linha 253, wp-includes / media.php) é usado pelowp_load_image()
qual é usado porimage_resize
(a função em que o processamento de imagens é feito para a criação de miniaturas). O limite de memória está na linha 252, portanto, até onde posso ver, não há como modificá-lo sem matar um gatinho *> :).Também existem funções GD em
load_image_to_edit()
(linha 200, wp-admin / includes / image-edit.php). Este é usado pelo editor de imagens (nunca o usei, já que conheço o WordPress, nem sabia que o encontraria :)). Se o seu cliente usá-lo, você também pode definir o limite de memória. Existe o filtroload_image_to_edit_path
.Espero que minha resposta seja útil.
* núcleo de hackers
fonte
WP_MEMORY_LIMIT
constante e até umadmin_memory_limit
filtro, mas nenhuma delas é consultada nesses poucos casos.Swill - Eu tive exatamente os mesmos problemas. Maldito wordpress com alguns dos "recursos" Uma abordagem mais sofisticada é alterar todos os @ini_set 's para configurá-lo de WP_MEMORY_LIMIT - problema resolvido
Além disso, alterar os valores php em tempo de execução não é tão inteligente, não sei por que ele é implementado :(
fonte
Pela sua descrição, acho que esse código
admin.php
é o problema:Um tanto estranho que ele trata o uso da memória do administrador separadamente, mas pelo menos é filtrável.
fonte
Eu só queria dizer obrigado ao bangbambang. Este é o primeiro post que descobri que foi capaz de me dar algumas dicas sobre por que a entrada no wp-config.php
define('WP_MEMORY_LIMIT', '512M');
não estava realmente sendo usada. Passei horas tentando descobrir isso ...Minha importação falhou com o problema esgotado de 256M, independentemente de como eu defini o limite de memória.
Aqui estão os lugares onde o limite de memória é codificado para 256M (na versão 3.0.5 de qualquer maneira).
fonte
WP_MAX_MEMORY_LIMIT
.fonte