Yönetici'de 256 MB'tan fazla bellek nasıl kullanılır?


10

Bugünün dijital kameraları için normalde büyük resimler yükleyen bir fotoğrafçı için bir site inşa ediyorum. Görüntüler oldukça bellek yoğundur, özellikle küçük resimler oluşturmak gibi görüntü işlemleri.

Bu yüzden yönetici için 256 MB'ın üzerindeki bellek sınırını yükseltmek istedim - bu nasıl yapılabilir? CGI ve PHP'nin 1 Gigabyte kullanmasına izin verdim, ancak wordpress her zaman belleği 256MB'a düşürüyor. Otomatik güncelleme yapabilmesi gereken bir istemci tarafında nasıl düzeltileceği hakkında bir fikriniz var mı?

GÜNCELLEME: Wordpress 3.2'den itibaren, Wordpress'teki maksimum bellek limiti yeniden yapılandırılabilir .


hey, seni bir süredir görmedim. Sanırım müşterilerle meşgulsünüz; Aferin! Belki Amazon S3 ve EC2 kullanarak görüntü işlemeyi boşaltmayı düşündünüz mü? aws.amazon.com/articles/1602 Veya Google App Engine? code.google.com/appengine/docs/python/images/usingimages.html Veya urlimg.com mu kullanıyorsunuz ?
MikeSchinkel

@MikeSchnikel - Hej! Bunu wordpress ile çözmek istiyorum. Bir küçük resim sunucusu kurmam gerekirse, wordpress'i yine de kullanmazdım. Ama bağlantılar için teşekkürler, en azından çok ilginç :).
hakre

Yanıtlar:


13

Teorik olarak, config.php dosyanızı düzenleyin ve bu satırı wp-settings.php eklemesinden önce ekleyin .

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

gerektiğini 256MB WordPress için hafıza limitini yükseltmek ya da ne set değer veriyoruz. Ve bu site çapında çalışır. Bununla birlikte, sorich87'nin işaret ettiği gibi , sabit ayarlı 256 MB sınırıyla bu ayarı değiştirecek birkaç işlev vardır.

Kesmek veya Kesmek Değil

Bununla ilgili küçük bir endişe, WP_MEMORY_LIMITkarşılaştığım en garip WP ayarlarından biridir. işaretlerseniz /wp-includes/default-constants.phpbu ayarı bulacaksınız:

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

WP codex içinde bulana kadar, WP varsayılan bellek kullanımını çok düşük ayarlayacağını asla bilemiyorum:

WordPress, bu işlevi kullanmadan önce PHP'nin girilen değerden daha az bellek tahsis edilip edilmediğini otomatik olarak kontrol edecektir. Örneğin, PHP 64MB ayrılmışsa, WordPress gerekirse 64MB'nin tümünü otomatik olarak kullanacağı için bu değeri 64M olarak ayarlamanıza gerek yoktur. ( Kaynak )

Bu açıklama rahatlatıcıydı. Bununla birlikte, @ini_set('memory_limit', '256M');daha fazla belleğe ihtiyaç duyan sabit kodlu her WP yürütme işlevinin kullanımından asla bahsedilmemektedir . Aslında, WP kodeksi bu belirsiz davranış hakkında hiçbir açıklama bulamıyorum. Kullanıcı ile ilgili olmayan işlevlerin çoğu ya belgelenmemiştir ya da kodeksde açıkça açıklanmamıştır.

Bu ayar çoğu durumda iyi çalışıyor olsa da, bu işlevleri daha düşük maksimum bellek ayarına sahip sunucuda veya sizin durumunda daha yüksek bellek kullanımı kullanmaz.

WP adamları bunu düzeltene kadar, tek çözümün çekirdeği değiştirmek olduğunu düşünüyorum. Sen bulabilirsiniz Bu yayını okumak için hakre ilginç tarafından yazılmış. Ayrıca Trac'ta bir yama önerisi sundu. Düzeltme eki dosyasına önceki bağlantı, bu ayarı kullanan işlevlerin listesini bulmanıza yardımcı olabilir.

Düzenle:

Bu, şimdiye kadar verdiğim en aptalca cevap çünkü kendi yazınıza bir bağlantı veriyorum (sadece OP adının 2 gün sonra hakre olduğunu anlayın ): D

düzenleme 2:

Yorumda belirtildiği gibi, bu 3.2 sürümü ile düzeltildi


cevabınız aptal olmaktan çok uzak. Kesin olarak, cevabı zaten biliyorken bu soruyu yayınlamam biraz aptalcaydı ve yorumunuz tamamen bunu aştığınızı gösteriyor. Gerçekten, en büyük özürüm, bağlantıyı buraya göndermek, soruyu gönderirken kendimi bildiğim kadar doğruydu, ne diyeceksin? Bunu kabul etmeye açık olduğunuz için teşekkürler! Senin stili gibi ben ve benim blog bağlantılı senin cevabın (blogunuza sadece bağlantılı arka).
hakre

3.2'de bu yapılandırılabilir olmalıdır: Changeset 17749
hakre

1

@ini_set('memory_limit', '256M');Görüntüler GD işlevleri tarafından belleğe yüklenmeden önce vardır .

imagecreatefromstring()(satır 253, wp-include / media.php) tarafından wp_load_image()kullanılır image_resize(işlev, küçük resimler oluşturmak için görüntü işleme yapılıyordu). Bellek limiti 252 satırında, bu yüzden görebildiğim kadarıyla, bir yavru kedi *> :) öldürmeden değiştirmenin bir yolu yok.

GD işlevleri de vardır load_image_to_edit()(satır 200, wp-admin / include / image-edit.php). Bu bir resim editörü tarafından kullanılır (WordPress'i bildiğimden, onu bulacağını bile bilmiyordum :) kullandım). İstemciniz kullanıyorsa, burada da bellek sınırını ayarlamak isteyebilirsiniz. Filtre var load_image_to_edit_path.

Umarım cevabım faydalıdır.

* bilgisayar korsanı


Evet, bunlar görüntülerle ilgili birkaç yönetici tarafı işlevine kodlanmıştır. Orada bir olan WP_MEMORY_LIMITsabit ve hatta bir admin_memory_limitfiltre, ama ikisi de vakaların bu avuç içinde danışılır.
Annika Backstrom

1

Swill - Aynı problemlerim vardı. Bazı "özellikler" ile lanet olası wordpress Oldukça daha sofistike bir yaklaşım Wini_MEMORY_LIMIT WP_MEMORY_LIMIT ayarlamak için tüm @ini değiştirmek için - sorun çözüldü

Ayrıca, çalışma zamanında php değerlerini değiştirmek o kadar akıllı değil, neden uygulandığından emin değil :(


0

Açıklamanıza göre bu kodun admin.phpsorun olduğunu düşünüyorum :

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

Yönetici bellek kullanımını ayrı ayrı ele alması biraz garip, ancak en azından filtrelenebilir.


Bu, yöneticideki görüntü işlemleri için çalışmaz. Bu filtreyi kullansam da kullanmasam da tekrar 256 MB'a indirilir. : /
hakre

0

Sadece Bangbambang'a teşekkür etmek istedim. Bu, wp-config.php'ye girişin neden kullanılmadığına dair bana bir fikir verebilecek ilk yazı define('WP_MEMORY_LIMIT', '512M');. Bunu anlamaya çalışmak için saatler harcadım ...

Bellek sınırını nasıl ayarladığımdan bağımsız olarak içe aktarımım 256M biten sorunla başarısız oldu.

Bellek sınırının 256M olarak sabit kodlandığı yerler (yine de 3.0.5 sürümünde).

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

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

wp-includes/media.php (line 252)

Bilet # 13847 sahiptir bağlı bir yama bu yerlerde yapılandırmak-mümkün adında ek sabiti ile yapar WP_MAX_MEMORY_LIMIT.
hakre

-4
/* Memory Limit */
define( 'WP_MEMORY_LIMIT', '1G' );
define( 'WP_MAX_MEMORY_LIMIT', '1G');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.