2012-01-09 25 views
1

PHPのメモリに問題があります。私は巨大なレポート、多くの情報を持つテーブルを取得する必要があります。PHPのメモリ不足

この情報は、情報が表示されるのに約5分間待たなければならないため、ユーザーが要求すると取得できないという複雑な機能によっても取得されます。

私は結果をキャッシュしていましたが、情報が増えたので、ブラウザがクラッシュして何も表示されません。これにはどのような解決策がありますか?

キャッシュの代わりにmysqlにデータを格納し、ユーザーが情報を要求したときに2つの選択を実行することを考えていました。その解決策についてどう思いますか?その他のオプションはありますか?

更新

問題を理解し、私はより詳細な情報を追加していなかったように見えます。

検索は既に使用されています。多くの留意点があります。

1)情報自体を計算する必要があります。私はそれを構築する(5分かかる)cronを実行し、それをキャッシュに格納します。ブラウザは単にキャッシュからレンダリングしており、検索はこのキャッシュされたデータを検索しています。情報をリアルタイムで取得することはできません。 2)それで、私は計算結果をMySQLに保存することを考えていました。キャッシュされたデータを検索するのではなく、MySQLテーブルで検索することができます。

問題がより明確になることを願っています。

+0

あなたprobelmを解決を願って、あなたは本当に、ブラウザがクラッシュを取得しています?そのような場合は、ブラウザに送信される情報をどのように取得するかが本当に問題になるとは思えません。 –

+1

可能であればページネーションを提案します。情報をまとめる。ユーザーの検索を追加するので、ページ単位ですべてのページをループする必要はありません。私は、問題はメモリ量ではなく、レンダリングされたコンテンツブラウザがどの程度レンダリングできるかということです。 – Eugene

+0

私はそれが正しいとは思わない。あなたはブラウザ経由で何か大きな計算をしなければならないスクリプトを起動していますか?それは本当に賢明ではありません。 – dierre

答えて

2

に設定し、私は、MySQLにデータを格納考える

0

可能であれば、出力を改ページする必要があります。私はいくつかのより多くの価値

+0

MySQLはデータを保存するように設計されています –

0

このパラメータに

memory_limit = 512M 

を設定php.iniのを確認... MySQLでのデータ保存が素晴らしいアイデアはないと思います頻繁にクエリされるデータ列にいくつかのインデックスを作成すると、キャッシングは大量のメモリを消費します(データはRAMに格納されることが多い)。

あなたが考慮すべきもう一つは、あなたがそこに

をあなたの解決策を見つけることができるので(アクセス、およびエラー)のログサーバーのログを表示しようとすると、最終的