Próbuję utworzyć tablicę z PHP. Wymiar tablicy to 26000 x 26000. Czy jest możliwe, aby tablica była tak duża? I już starać się tablicę o wymiarach 10000 x 10000 ale program ciągle mi o tym mówisz:Jak zrobić dużą tablicę (26000 x 26000) używając PHP?
Fatal error: Out of memory (allocated 1886388224) (tried to allocate 24 bytes) in C:\xampp\htdocs\matrix\index.php on line 24
mam 8GB RAM, już ustawić memory_limit w php.ini z -1 (konfiguracja apache). kod do zbudowania tablicy jest następujący:
function zeros($rowCount, $colCount)
{
$matrix = array();
for ($rowIndx=0; $rowIndx<$rowCount; $rowIndx++)
{
$matrix[] = array();
for($colIndx=0; $colIndx<$colCount; $colIndx++)
{
$matrix[$rowIndx][$colIndx]=0;
}
var_dump(memory_get_usage());
}
return $matrix;
}
$matrix = zeros(25000,25000);
Próbuję już używać SplFixedArray, ale wynik jest taki sam. Proszę, pomóżcie mi, dzięki! :)
muszę się zastanawiać, co twój przypadek użycia jest dla takich dużych tablic. Czy to możliwe, tak, choć przypuszczam, że będziesz potrzebował więcej pamięci, ale jest to konieczne. –
Jeśli korzystasz z bezpośredniego indeksowania numerycznego i znasz wcześniej wymiary swojej macierzy; dlaczego nie rozważyć [SPLFixedArray] (http://nl3.php.net/manual/en/class.splfixedarray.php) zamiast –
Przetestowałem od 100, 100 do 600, 600: memoryUsage/arrayElements ≈ 200 Bytes, więc w twoim przypadku byłoby to potrzebujesz 25000 * 25000 * 200 Bytes ≈ 100GB –