今日のデジタルカメラでは通常大きい写真をアップロードする写真家のためのサイトを構築しています。画像はメモリを大量に消費します。特に、サムネイルの作成などの画像操作は重要です。
だから私は256MB以上の管理者のメモリ制限を上げたかった-これはどのように行うことができますか?CGIとPHPで最大1ギガバイトを使用することを許可しましたが、ワードプレスは常にメモリを256MBに減らします。自動更新を可能にする必要があるクライアント側でそれを修正する方法はありますか?
今日のデジタルカメラでは通常大きい写真をアップロードする写真家のためのサイトを構築しています。画像はメモリを大量に消費します。特に、サムネイルの作成などの画像操作は重要です。
だから私は256MB以上の管理者のメモリ制限を上げたかった-これはどのように行うことができますか?CGIとPHPで最大1ギガバイトを使用することを許可しましたが、ワードプレスは常にメモリを256MBに減らします。自動更新を可能にする必要があるクライアント側でそれを修正する方法はありますか?
回答:
理論的には、config.phpを編集し、wp-settings.phpを含める前にこの行を追加します。
define('WP_MEMORY_LIMIT', '256M');
すべきである 256メガバイトへのWordPressのあなたのメモリ制限を上げたり、何でもあなたが設定した値。そして、これはサイト全体で機能します。ただし、sorich87が指摘したように、ハードコーディングされた256 MBの制限でこの設定を変更する関数はほとんどありません。
ハックするかしないか
これに関する少しの懸念WP_MEMORY_LIMIT
は、私が遭遇した最も奇妙なWP設定の1つです。チェック/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 codexでこれが見つかるまで、WPがデフォルトのメモリ使用量を非常に低く設定することに気づきませんでした。
WordPressは、この関数を使用する前に、入力された値よりも少ないメモリがPHPに割り当てられているかどうかを自動的にチェックします。たとえば、PHPに64MBが割り当てられている場合、WordPressは必要に応じてすべての64MBを自動的に使用するため、この値を64Mに設定する必要はありません。(ソース)
その説明はほっとした。ただし、@ini_set('memory_limit', '256M');
WPがより多くのメモリを必要とする関数を実行するたびにハードコードされる使用法については言及されていません。実際、WP codexからのこのあいまいな動作についての説明はありません。ユーザーに関連しない機能のほとんどは、文書化されていないか、コーデックスで明確に説明されていないためです。
この設定はほとんどの場合にうまく機能しますが、最大メモリ設定が低いサーバーではこれらの機能は役に立たなくなります。
WPの人たちがこれを修正するまで、私はあなたの唯一の解決策はコアを変更することだと思います。あなたはhakreによって書かれたこの投稿を読むのが面白いかもしれません。また、Tracでパッチの推奨を提出します。パッチファイルへの以前のリンクは、この設定を使用する関数のリストを見つけるのに役立つ場合があります。
編集:
これは私があなたの投稿へのリンクを提供しているので、私がこれまでに提供した中で最も愚かな答えです(2日後にOP名がハッカーであったことを理解してください):D
編集2:
コメントで述べたように、これは3.2リリースで修正されました
@ini_set('memory_limit', '256M');
GD関数によって画像がメモリに読み込まれる前にあります。
imagecreatefromstring()
(253行目、wp-includes / media.php)によってwp_load_image()
使用されますimage_resize
(サムネイル作成のために画像処理が行われた機能)。メモリの制限は252行目です。そのため、私が見る限り、子猫を殺さずに変更する方法はありません*> :)。
load_image_to_edit()
(行200、wp-admin / includes / image-edit.php)にもGD関数があります。これは画像エディターで使用されています(WordPressを知っていたので、使用する必要があることさえ知りませんでした:))。クライアントがそれを使用している場合は、そこでメモリ制限を設定することもできます。フィルターありますload_image_to_edit_path
。
私の答えがお役に立てば幸いです。
*ハッキングコア
WP_MEMORY_LIMIT
一定のもadmin_memory_limit
フィルタは、どちらもが例これらのほんの一握りに相談されていません。
バンバンバンのおかげで言いたかっただけです。これは、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)