0

過去 24 時間、先週、先月、および各投稿のすべての時間ビューで追跡できるいくつかの投稿/記事を含む Web サイトを取得しました。

各ビューのタイムスタンプをデータベースに保存します。誰かがホームページを開くと、これらのタイムスタンプをループし、それに応じて過去 24 時間/先週/先月/すべての時間にデータベースに保存します。これは「うまく」機能します(ただし問題があります)。

今問題:

5000件の投稿がある場合はどうなりますか。php スクリプトは 5000 件の投稿すべてをループし、パフォーマンスの問題を引き起こしている節約を行う必要があります。機能が完了するとすぐにサイトは表示されません。「許可されたメモリサイズが使い果たされました...」というエラーメッセージが既に表示されています。

どうすればこの問題を解決できますか? 解決策はありますか。

正確なカウンター データを取得するには、ホームページを開いたときにこの関数を実行することが非常に重要です。

この機能を投稿ビューでのみ実行すると、この投稿だけでデータが正確になりません。投稿が数日間閲覧されていないとしたら、カウンター データは更新されません。

注: これは、この場合はあまり重要ではない Wordpress テーマ用です。

4

1 に答える 1

0

WordPress の cron 関数wp_cron (こちら)を使用して調べることができます。

注:「真の cron ジョブ」とは異なり、fire へのアクセスに依存しています。

また、Transients APIの使用を検討してください。トランジェントはパフォーマンスを大幅に向上させます。(ここ)


Transients API は、簡単に言えば、ループをキャッシュします。そのため、毎回 5000 件の投稿を循環させる代わりに、一度ループしてからデータを設定します。その後のロードでは、キャッシュされたデータがフェッチされます。データが存在しないか期限切れの場合、投稿をループして新しいデータをキャッシュします。

この疑似コードをチェックしてください

if ( false === ( $query = get_transient( 'query' ) ) ) {
    // It wasn't there, so regenerate the data and save the transient
    $query = new WP_Query( '//Your Loop Stuff' );
    set_transient( 'query', $query );
}
$timestamps = $query->TIMESTAMP(or whatever you use);
于 2012-10-02T21:57:18.373 に答える