2012-01-09 3 views
1

У меня проблема с памятью в PHP. Я должен получить огромный отчет, таблицу с большим количеством информации.Недостаточно памяти в PHP

Эта информация получена также с помощью некоторых сложных функций, что означает, что она не может быть получена по просьбе пользователя, так как ему потребуется подождать около 5 минут для отображения информации.

Я кэшировал результат, но по мере роста информации браузер теперь просто падает и ничего не показывает. Каковы возможные решения для этого?

Я думал о сохранении данных в mysql вместо кеша, а затем выполнял несколько выборок, когда пользователь запрашивает информацию. Что вы думаете об этом решении? Какие-нибудь другие варианты?

Update

Похоже, проблема не была понята, поэтому я добавляю больше деталей.

Поиск уже используется. Следует иметь в виду много вопросов:

1) Сама информация должна быть рассчитана. У меня работает cron, который строит его (занимает 5 минут) и сохраняет его в кеше. Браузер - это просто рендеринг из кеша, и поиск выполняет поиск по этим кэшированным данным. Информация не может быть получена в режиме реального времени. 2) Именно поэтому я думал о сохранении вычисленных результатов в MySQL, таким образом поиск может искать в таблице MySQL, а не искать кешированные данные (которые сейчас и сейчас невозможно обрабатывать браузером).

Надеюсь, проблема теперь более ясна!

+0

Вы действительно получаете сбоя браузера ? Если это так, я сомневаюсь, что действительно важно, как вы получаете информацию, отправленную в браузер. –

+1

Я бы предложил разбиение на страницы, если это возможно. Дайте информацию в кусках. Добавьте поиск для пользователей, чтобы им не нужно было перебирать каждую страницу в разбивке на страницы. Я думаю, что проблема не в объеме памяти, а в том, сколько обработанного браузера содержимого. – Eugene

+0

Я не думаю, что все правильно. Вы запускаете скрипт, который должен выполнять некоторые огромные вычисления через браузер? Это не очень мудро. – dierre

ответ

2

Я думаю, что хранение данных в MySQL это хорошая идея, особенно если вы создаете некоторые индексы на часто задаваемых столбцах данных, кеширование будет потреблять большую память (она часто хранит данные в ОЗУ).

Другая вещь, которую вы должны рассмотреть, попробуйте для просмотра сервера журналов (доступ и ошибки) журналы, потому что вы могли бы найти свое решение там

и, наконец, надеюсь, что вы решить probelm

0

Возможно, вы должны разделить выходные данные, если это возможно. Я думаю, что хранение данных в MySQL не отличная идея ...

+0

MySQL предназначен для хранения данных –

0

проверить настройки php.ini для этого параметра

memory_limit = 512M 

множество его еще какое-то значение

Смежные вопросы