Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Fatal error: Allowed memory size of 134217728 bytes exhausted
Forum PHP.pl > Forum > Przedszkole
DowNlOaD_
Kod
$symbols = array("a", "b", "c");

for($a = 0; $a < count($symbols); $a++) //1
{
$generated .= $symbols[$a]."\r\n"; //1
for($b = 0; $b < count($symbols); $b++) //2
{
$generated .= $symbols[$a].$symbols[$b]."\r\n"; //2
for($c = 0; $c < count($symbols); $c++) //3
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c]."\r\n"; //3
for($d = 0; $d < count($symbols); $d++) //4
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d]."\r\n"; //4
for($e = 0; $e < count($symbols); $e++) //5
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e]."\r\n"; //5
for($f = 0; $f < count($symbols); $f++) //6
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f]."\r\n"; //6
for($g = 0; $g < count($symbols); $g++) //7
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g]."\r\n"; //7
for($h = 0; $h < count($symbols); $h++) //8
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h]."\r\n"; //8
for($i = 0; $i < count($symbols); $i++) //9
{
for($j = 0; $j < count($symbols); $j++) //10
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j]."\r\n"; //10
for($k = 0; $k < count($symbols); $k++) //11
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j].$symbols[$k]."\r\n"; //11
for($l = 0; $l < count($symbols); $l++) //12
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j].$symbols[$k].$symbols[$l]."\r\n";

//12
for($m = 0; $m < count($symbols); $m++) //13
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j].$symbols[$k].$symbols[$l].

$symbols[$m]."\r\n"; //13
for($n = 0; $n < count($symbols); $n++) //14
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j].$symbols[$k].$symbols[$l].

$symbols[$m].$symbols[$n]."\r\n"; //14
for($o = 0; $o < count($symbols); $o++) //15
{
$generated .= $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d].$symbols[$e].$symbols[$f].$symbols[$g].$symbols[$h].$symbols[$i].$symbols[$j].$symbols[$k].$symbols[$l].

$symbols[$m].$symbols[$n].$symbols[$o]."\r\n"; //15
}}}}}}}}}}}}}}}


to jest moj kod, i niewiem czemu ale znow jakis error napotkalem ;/
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133955570 bytes)

zna moze ktos odpowiedz?
wookieb
Co ty robisz z tymi symbolami ziomus? Przeciez JEST NAPISANE. Przekroczony limit pamięci.
DowNlOaD_
a jak moge obejsc ta pamiec? to chodzi ze przekroczono pamiec zmiennej $generated czy cos z for?
Pawel_W
skrypt pobiera po prostu za dużo pamięci komputera...

a jak chcesz to
init_set -> ALLOWED_MEMORY_SIZE
DowNlOaD_
ini_set(ALLOWED_MEMORY_SIZE, PAMIEC); ?
mount
za słaby serwer do wykonania tego skryptu... sciana.gif
DowNlOaD_
ale powiedzcie mi tylko czy to jest limit zmiennej? jesli tak to moge to podzielic na pare zmiennych smile.gif
Wicepsik
Cytat(wookieb @ 6.06.2010, 12:15:02 ) *
Przeciez JEST NAPISANE. Przekroczony limit pamięci.

DowNlOaD_
zrobilem wszystko calkowciie inaczej

Kod
$fp = fopen("wordlist.txt", "w");

$symbols = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F",

"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "-", "+",

"=", "[", "]", "{", "}", "|", "\"", "\\", "", "'", ";", ":", "<", ">", ",", ".", "?", "/", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "ą", "ć", "ę", "ł", "ń", "ó", "ś",

"ź", "ż", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż", "©", "®", "™");

for($a = 0; $a < count($symbols); $a++)
{
fwrite($fp, $symbols[$a]."\r\n");
for($b = 0; $b < count($symbols); $b++)
{
fwrite($fp, $symbols[$a].$symbols[$b]."\r\n");
for($c = 0; $c < count($symbols); $c++)
{
fwrite($fp, $symbols[$a].$symbols[$b].$symbols[$c]."\r\n");
for($d = 0; $d < count($symbols); $d++)
{
fwrite($fp, $symbols[$a].$symbols[$b].$symbols[$c].$symbols[$d]."\r\n");
}}}}

fclose($fp);


i mam taki error:

Fatal error: Maximum execution time of 30 seconds exceeded

plis pomozcie smile.gif
Spawnm
daj set_time_limit(0); na początku kodu.
DowNlOaD_
teraz strona mi sie wogole nie odczytuje ;/
Crozin
1) Napisz co Ty chcesz w ogóle zrobić
2) Nie dziw się, że skrypt działa długo skoro skrypt musi wykonać setki tysięcy/milionów operacji zapisu do pliku
DowNlOaD_
chce wygenerowac wszystkie mozliwosci slow ktore moga wystapic z tymi literami/znakami w $symbols array
zend
Scrabble cheater? klik
DowNlOaD_
ale nie chodzi mi o polskie slowa

tylko o wszystkie mozliwosci jakie sa dopuszczane z tymi znakami ktore wyzej podalem

np:
aaa
aab
aac
aad
aae
...
cbd
cbe

itp...
erix
G: wariacje bez powtórzeń; był jakiś czas temu gotowiec na forum.

Poza tym, jeśli chcesz testować hasła, to jest w PHP biblioteka crack.
DowNlOaD_
a czy moge sie dowiedziec jak ten temat sie nazywal?

lub o co biega z tymi bibliotekami?

PS: pytam o tytul tematu bo taki temat moze sie nazywac roznie ;/
lukasz_test
Albo zwiększyć ilość przydzielonej pamięci, albo zoptymalizować kod. Skrypt nie może tak działać, żeby zużywał tyle pamięci.
shinuexx
W pierwszym kodzie próbujesz zapisać aż 1 073 741 824 bajtów (4^15) danych. Prędzej do jednego pliku. Jeśli już chcesz takie coś zrobić to użyłbym pętli "foreach" (bardziej przydatnych przy tablicach) i dopisał do symboli ciąg pusty "". Jeśli masz dostęp do konsoli to najlepiej by było w skrypcie dać "echo" każdego ze słów oraz w konsoli przekierowanie do pliku;)

A jak już to najlepiej do tego typu generowania słów to nie używać php tylko jakiegoś języka kompilowanego najlepiej.

PS. Generowanie słów 8 literowych z 116 możliwych znaków to ilość kombinacji rzędu 10^6 więc czas wykonywania jest liczony co najmniej w dniach jak nie dłużej na zwykłym kompie. Poza tym przy zapisie tego jednego pliku musiałbyś mieć do dyspozycji około 10 PB (10^16 bajtów). Myślę że nie masz co się za to brać ze zwykłym deskopem;P
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.