3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是我能想到的唯一合理的解釋,請(qǐng)檢查我的推論是否屬實(shí)。
您$dataIds不是小整數(shù),而是實(shí)際代碼中的數(shù)十億。出于某種原因,PHP 似乎$this->end輸入為字符串而不是數(shù)組。實(shí)際上,您正在這樣做:
$stuff='string';
$stuff[5000000000]='y'; // will allocate 5 GB of RAM, exceeding your 128M maximum
當(dāng)你認(rèn)為你正在這樣做時(shí):
$stuff=new Array();
$stuff[5000000000]='y'; // will allocate just a few Bytes since it is an asssociative Array
您將不得不挖掘代碼的其他部分,以了解為什么會(huì)出現(xiàn)這種情況

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
在摸索了一下之后(請(qǐng)參閱從完全不同的切線開始的其他答案),似乎超過 4 GB RAM 的巨大內(nèi)存分配發(fā)生在strtotime
. 目前尚不清楚這是否與 PHP 錯(cuò)誤 #53502(一個(gè)舊的 PHP 5.3 錯(cuò)誤,當(dāng)前標(biāo)記為已關(guān)閉)有關(guān)。
然而,改變
$end[$id] = ($endDate !== "") ? strtotime($endDate." UTC") : $curTime;
至
date_default_timezone_set("UTC"); $end[$id] = ($endDate !== "") ? strtotime($endDate) : $curTime;
擺脫現(xiàn)象,運(yùn)行平穩(wěn)。目前尚不清楚是否有任何特定值$endDate
導(dǎo)致了這種情況,或者還有什么可能是促成因素。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可能希望將其添加到您的腳本中(放在最上面)
ini_set('memory_limit', '-1');
您可以稍后設(shè)置-1
為“256
如果有64
”或“更少”,這還不夠。
- 3 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)