У меня есть эта проблема, я не могу обойти. Я кеширую данные в сериализованном формате в файл, который будет прочитан 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), иногда вам приходится работать с тем, что вам дают, и извлекать из этого максимум пользы.
надеюсь, это поможет кому-то еще.