большой php сериализованный файл кэша более 100 МБ, как справиться? - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть эта проблема, я не могу обойти. Я кеширую данные в сериализованном формате в файл, который будет прочитан php5 и не запрошен при запросе. Теперь некоторые файлы данных имеют большой размер от 100 до 300 МБ. В нем есть сериализованные объекты.

Проблема с извлечением этих данных будет длиться вечно, если они когда-либо закончатся, в настоящее время они терпят неудачу и достигают максимального времени выполнения 90 секунд, установка их выше не является хорошим решением. Я знаю, что это определенно идея «лучше кода», поэтому я спрашиваю здесь.

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

спасибо

РЕДАКТИРОВАТЬ: Я решил это сам. Спасибо всем за ваши ответы. Это то, как я это сделал, не самый лучший, но временный обходной путь до 2020 года.

Я "выгружал" файл кэша.

код мутанта такой

for loop that jumps for 10,000 rows
$dataN = array_splice($mydata,N,10000,true)
fputs($myfileN,serialize($dataN))
end

изменить 2: Поэтому основная идея заключалась в том, чтобы уменьшить размер файла, чтобы ускорить процесс. Я сузил сериализацию / десериализацию, разделив файлы по году / месяцу. Сериализованные данные являются заголовками электронных писем, поэтому я изменил сериализацию, чтобы разделить данные соответствующим образом и считать обратно таким же образом. При небольшом размере файла все работает как минимум (что и является моей работой). В конечном счете, теперь мне будет проще перейти на базу данных и повторить эту вещь. Независимо от того, что вы более благосклонны (вы ошибаетесь в комментариях, что также часто встречается в IRC / usenet), иногда вам приходится работать с тем, что вам дают, и извлекать из этого максимум пользы.

надеюсь, это поможет кому-то еще.

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

Пожалуйста, обратитесь к моему первоначальному вопросу для ответа.Это решено для моего случая.

0 голосов
/ 25 февраля 2011

Точный случай, когда излечение оказалось намного хуже, чем болезнь.Прекрасный пример показывает нам, почему преждевременная оптимизация является злом.

Спасибо, что предоставили сообществу такой прекрасный пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...