• 解決済 igawan

    (@igawan)


    いつもお世話になっております。
    外部PHPで記事を表示させたいのですが、posts_per_pageを500にすると
    Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 72 bytes) in ~ 
    と表示されてしまいます。

    ■補足
     ・記事は500件以上あります。
     ・posts_per_pageを5にすると正常に表示されます。
     ・posts_per_pageを-1にすると白紙で表示されます。

    メモリの使いすぎだということだと思いますが、どのようにすれば良いのか分からず、、、お知恵を拝借できれば幸いです。
    よろしくお願いいたします。

    <?php
    require_once(dirname( __FILE__ ) . '/wp/wp-load.php');
    header("Content-Type: text/html; charset=UTF-8");
    query_posts('posts_per_page=500');
    if (have_posts()) :
    	while (have_posts()) : the_post();
    					  echo get_the_title();
    	endwhile;
    endif;
    wp_reset_query();
    ?>
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 単純に言うとサーバーのメモリを増やせばいいんです。
    詳しくはサーバ管理者やホスティング事業者に聞いてみてください。

    トピック投稿者 igawan

    (@igawan)

    ありがとうございます。

    php.iniで
    memory_limit = 64M
    にすると500件表示できました。

    posts_per_pageを-1にするとやはりFatal error: Allowed memory size of~となるので思い切って
    memory_limit = 256M
    としたところ動き出しました。

    レンタルサーバ(さくらインターネットのビジネスプロ)でこんなにメモリ使って大丈夫かな?件数が増えたらまた動かなくなるのではという不安が拭えないのですが、、、

    できればメモリの開放(開放するものがないか…)や、何かしらの方法で負荷を減らせたらと思うのですが他に手段は無いでしょうか?

    後出しで申し訳ありません。

    WordPress のJSON REST APIを利用して、外部から少しづつ記事を取得することができます。
    外部サイトのほうでajaxを使って順に表示していけば、メモリを気にすることなくスムーズな動きになるのではないかと思います。

    トピック投稿者 igawan

    (@igawan)

    ありがとうございます!
    JSON REST APIでAPI化するってことですね。
    調べてみます!

    hide

    (@hideokamoto)

    JSON REST API(WP REST API)を使った場合でもper_pageに-1を指定すると同じことが起きると思います。
    なので10件ずつ取得するなど、負荷分散していく方法かAPIの戻り値をキャッシュさせる方法についても調べておくといいかと思います。

    トピック投稿者 igawan

    (@igawan)

    ありがとうございます。

    いろいろやってみたいと思いますので一旦解決済みとさせていただきます。

    今後ともよろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「外部PHPで投稿記事を全件表示させたい」には新たに返信することはできません。