我試圖在我的網站上使用PHP創建一個加密器。我在使用Lua之前創建了同樣的東西,所以我目前正試圖移植它,但是它錯誤地聲稱我耗盡了太多內存,但我不確定可能會導致這種情況:在遞歸函數中分配內存錯誤
function offsetASCII($OrigByte, $Offset) {
$OrigByte = $OrigByte + $Offset;
if ($OrigByte > $MaxASCII) {
return offsetASCII($MinASCII, $OrigByte-$MaxASCII);
} else {
return $OrigByte;
}
}
這個想法是它保持數字OrigByte由數字Offset抵銷。如果OrigByte的新值大於最大允許值,則它重複使OrigByte成爲最小允許值的函數,並使偏移量達到最大值的「剩餘」量。這個重複直到它在最大值內,然後它返回它。
錯誤是:
Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 130968 bytes) in [PageDirectoryHere] on line 49
49行是:
return offsetASCII($MinASCII, $OrigByte-$MaxASCII);
OrigByte可以轉化爲它的ASCII值的任何字母。 MinASCII和MaxASCII是ASCII(65和90)中大寫字母的最小值和最大值。偏移最初是rand($ MinASCII,$ MinASCII + 25)。
我無法理解爲什麼發生這種情況,所以先感謝您的幫助!
在php.ini中增加內存限制 –
爲什麼你要創建一個加密器?它是爲了什麼?因爲你永遠不應該推出你自己的加密。 – st2erw2od
由於我們不知道您使用最佳答案的實際數據的任何信息,我們可以給您的是「因爲PHP已經耗盡了所有可用內存」。 – h2ooooooo