관리자에서 256MB 이상의 메모리를 사용하는 방법은 무엇입니까?


10

현재 디지털 카메라에 일반적으로 큰 사진을 업로드하는 사진 작가를위한 사이트를 만들고 있습니다. 이미지는 메모리를 많이 사용합니다. 특히 썸네일 만들기와 같은 이미지 작업입니다.

그래서 관리자의 메모리 제한을 256MB 이상으로 높이고 싶었습니다. 어떻게 할 수 있습니까? CGI와 PHP가 최대 1 기가 바이트를 사용하도록 허용했지만 워드 프레스는 항상 메모리를 256MB로 줄입니다. 클라이언트 측에서 자동 업데이트가 필요한 문제를 해결하는 방법에 대한 아이디어가 있습니까?

업데이트 : Wordpress 3.2부터 Wordpress의 최대 메모리 제한은 다시 구성 할 수 있습니다.


이봐 요, 당신을 한동안 보지 못했습니다. 당신이 클라이언트로 바빴던 것 같아요; 잘 됐네요! Amazon S3 및 EC2를 사용하여 이미지 처리 오프로드를 고려한 적이 있습니까? aws.amazon.com/articles/1602 또는 Google App Engine? code.google.com/appengine/docs/python/images/usingimages.html 또는 urlimg.com을 사용 하십니까 ?
MikeSchinkel

@MikeSchnikel -Hej! 워드 프레스 로이 문제를 해결하려고합니다. 썸네일 서버를 설정 해야하는 경우 어쨌든 워드 프레스를 사용하지 않습니다. 그러나 링크에 감사드립니다. 최소한 흥미 롭습니다 :).
hakre

답변:


13

이론적으로 config.php를 편집하고 wp-settings.php 포함 전에이 줄을 추가하십시오 .

define('WP_MEMORY_LIMIT', '256M');

해야 2백56메가바이트에 워드 프레스에 대한 메모리 제한을 늘리거나 당신이 무엇을 설정 값. 그리고 이것은 사이트 전체에서 작동합니다. 그러나 sorich87이 지적했듯이 하드 코딩 된 256MB 제한 으로이 설정을 변경하는 기능은 거의 없습니다.

해킹하거나 해킹하지 않기

이것에 대해 약간의 걱정은 WP_MEMORY_LIMIT내가 경험 한 가장 이상한 WP 설정 중 하나입니다. 확인 /wp-includes/default-constants.php하면이 설정을 찾을 수 있습니다.

// set memory limits
if ( !defined('WP_MEMORY_LIMIT') ) {
    if( is_multisite() ) {
        define('WP_MEMORY_LIMIT', '64M');
    } else {
        define('WP_MEMORY_LIMIT', '32M');
    }
}

WP 코덱에서 이것을 찾을 때까지 WP가 기본 메모리 사용량을 너무 낮게 설정한다는 것을 결코 알지 못합니다.

WordPress는이 기능을 사용하기 전에 PHP에 입력 한 값보다 적은 메모리가 할당되었는지 자동으로 확인합니다. 예를 들어, PHP에 64MB가 할당 된 경우, 필요한 경우 WordPress에서 자동으로 모든 64MB를 사용하므로이 값을 64M로 설정할 필요가 없습니다. ( source )

그 설명은 안심이되었습니다. 그러나 @ini_set('memory_limit', '256M');더 많은 메모리를 필요로하는 WP 실행 기능마다 하드 코딩 된 사용법은 언급되지 않았습니다 . 사실, 나는 WP 코덱에서이 모호한 행동에 대한 설명을 찾지 못했습니다. 사용자와 관련되지 않은 대부분의 기능은 문서화되어 있지 않거나 코덱으로 명확하게 설명되어 있지 않기 때문입니다.

이 설정은 대부분의 경우 훌륭하게 작동하지만 최대 메모리 설정이 낮은 서버 또는 메모리 사용량이 많은 서버에서는 이러한 기능을 쓸모 없게 만듭니다.

WP 사람들이 이것을 고칠 때까지 유일한 해결책은 코어를 수정하는 것입니다. 당신은 찾을 수 이 게시물 읽기 hakre 흥미에 의해 작성합니다. 또한 Trac에서 패치 권장 사항 을 제출합니다 . 패치 파일에 대한 이전 링크는이 설정을 사용하는 기능 목록을 찾는 데 도움이 될 수 있습니다.

편집하다:

이것은 내가 당신의 자신의 게시물에 대한 링크를 제공하기 때문에 내가 얻은 가장 바보 같은 대답 입니다 (OP 이름이 2 일 후에 hakre임을 알았습니다 ) : D

편집 2 :

의견에서 언급했듯이 이것은 3.2 릴리스수정되었습니다.


당신의 대답은 바보가 아닙니다. 정확히 말하면 내가 이미 대답을 알고있는 동안이 질문을 게시하는 것은 다소 어리석은 일이었습니다. 귀하의 의견은 당신이 실제로 그것을 극복했음을 보여줍니다. 실제로, 가장 큰 사과는 여기에 링크를 게시하는 것은 질문을 게시하는 동안 내가 아는 한 정확하다는 것입니다. 그것을 인정하기 위해 공개되어 주셔서 감사합니다! 나는 당신의 스타일을 좋아하고 내 블로그를 귀하의 답변에 연결했습니다 (블로그로 다시 연결될뿐만 아니라).
hakre 2019

3.2에서 이것은 구성 가능해야한다 : Changeset 17749
hakre

1

있다 @ini_set('memory_limit', '256M');이미지가 GD 기능에 의해 메모리에로드하기 전에.

imagecreatefromstring()(라인 253, wp-includes / media.php)는에 의해 wp_load_image()사용됩니다 image_resize(이미지 처리는 썸네일 생성을 위해 수행되었습니다). 메모리 제한은 252 줄에 있으므로 알 수있는 한 새끼 고양이를 죽이지 않고 수정 할 수있는 방법이 없습니다.

GD 기능도 있습니다 load_image_to_edit()(200 행, wp-admin / includes / image-edit.php). 이것은 이미지 편집기에서 사용됩니다 (WordPress를 알고 있기 때문에 그것을 사용해야한다는 것을 알지 못했기 때문에 사용해야했습니다.). 클라이언트가 사용하는 경우 메모리 제한도 설정할 수 있습니다. 필터가 load_image_to_edit_path있습니다.

내 대답이 도움이되기를 바랍니다.

해킹 코어


그렇습니다. 이들은 이미지와 관련된 몇 가지 관리 기능으로 하드 코딩되어 있습니다. WP_MEMORY_LIMIT상수 는 물론 admin_memory_limit필터도 있지만 이러한 소수의 경우에는 언급되지 않습니다.
Annika Backstrom

1

스윌-나는 똑같은 문제가있었습니다. "특징"의 일부로 워드 프레스 좀 더 복잡한 접근 방식은 모든 @ini_set을 WP_MEMORY_LIMIT에서 설정하도록 변경하는 것입니다.

또한 런타임에 PHP 값을 변경하는 것이 그렇게 똑똑하지는 않지만 왜 구현되는지 확실하지 않습니다.


0

귀하의 설명에 따르면이 코드 admin.php는 문제 라고 생각합니다 .

if ( current_user_can( 'manage_options' ) )
    @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', '256M' ) );

관리 메모리 사용을 개별적으로 처리하는 것은 다소 이상하지만 적어도 필터링 가능합니다.


관리자의 이미지 작업에는 작동하지 않습니다. 해당 필터 사용 여부에 관계없이 다시 256MB로 줄어 듭니다. : /
hakre

0

방 밤방 덕분에 고맙습니다. 이것은 내가 wp-config.php의 항목 define('WP_MEMORY_LIMIT', '512M');이 실제로 사용되지 않은 이유에 대한 통찰력을 줄 수있는 첫 번째 게시물 입니다. 나는 이것을 알아 내려고 몇 시간을 보냈다 ...

메모리 제한 설정 방법에 관계없이 256M 소진 문제로 가져 오기에 실패했습니다.

다음은 메모리 제한이 256M으로 하드 코딩 된 장소입니다 (버전 3.0.5).

wp-admin/includes/file.php (line 532)

wp-admin/includes/image-edit.php (line 393 & 498)

wp-includes/media.php (line 252)

Ticket # 13847 에는 패치가 추가되어 해당 장소를라는 추가 상수로 구성 할 수 WP_MAX_MEMORY_LIMIT있습니다.
hakre

-4
/* Memory Limit */
define( 'WP_MEMORY_LIMIT', '1G' );
define( 'WP_MAX_MEMORY_LIMIT', '1G');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.