В моем сценарии PHP мне нужно создать массив> 600 тысяч целых чисел. К сожалению, My Webservers memory_limit < /code> установлен на 32 м, поэтому при инициализации массива скрипт прерывает сообщение < /p>
фатальная ошибка: < /strong> допустил размер памяти 33554432. /home/www/myaccount/html/mem_test.php на линии 8
Я знает факт, что PHP не хранит значения 8, а то, скорее, как Zvalues, которые япыть, а не в том, что я понятные по -прежнему, а то, что, скорее, есть значения, а то, что, скорее, в целом, а то, что, скорее, есть значения. 64-битная система). Я написал небольшой сценарий, чтобы оценить, сколько памяти использует каждая запись в массиве, и оказывается, что он довольно 128 байтов. 128 !!! Мне нужно> 73 м для хранения массива. К сожалению, веб-сервер не находится под моим управлением, поэтому я не могу увеличить memory_limit < /code>. < /P>
Мой вопрос: есть ли в PHP возможность создать массивную структуру, которая использует меньше памяти. Мне не нужно, чтобы эта структура была ассоциативной (простой индексный доступ достаточно). Он также не должен иметь динамического изменения размера - я точно знаю, насколько большим будет массив. Кроме того, все элементы будут одинакового типа. Точно так же, как старый добрый C-Array. < /P>
Редактировать: < /strong>
, так что решение Deceze работает с 32-битных целых числа. Но даже если вы находитесь в 64-битной системе, Pack (), похоже, не поддерживает 64-разрядные целые числа. Чтобы использовать 64-разрядные целые числа в моем массиве, я применил несколько битовых манипуляций. Возможно, приведенные ниже фрагменты будут полезны для кого -то: < /p>
function push_back(&$storage, $value)
{
// split the 64-bit value into two 32-bit chunks, then pass these to pack().
$storage .= pack('ll', ($value>>32), $value);
}
function get(&$storage, $idx)
{
// read two 32-bit chunks from $storage and glue them back together.
return (current(unpack('l', substr($storage, $idx * 8, 4)))
Подробнее здесь: https://stackoverflow.com/questions/213 ... mory-usage
Нужна массивная структура в PHP с минимальным использованием памяти ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение