第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用大約 2MB 內(nèi)存耗盡內(nèi)存

使用大約 2MB 內(nèi)存耗盡內(nèi)存

PHP
墨色風(fēng)雨 2023-09-22 14:52:49
我正在與有內(nèi)存問題的 php 作斗爭(zhēng)。腳本終止并顯示以下消息: PHP Fatal error:  Allowed memory size of 2097152 bytes exhausted (tried to allocate 3027408 bytes) in test.php on line 9我創(chuàng)建了一個(gè)小測(cè)試腳本:<?phpfunction memstat($file, $line) {    $memlog = fopen('mem.log', "a+");    fwrite($memlog, sprintf('mem @ %s %d: %d (%d; peek: %d)'.PHP_EOL, $file, $line, memory_get_usage(), memory_get_usage(true), memory_get_peak_usage()));    fclose($memlog);}memstat(__FILE__, __LINE__);$str = str_pad('', 1523687, ' ');memstat(__FILE__, __LINE__);print 'end '.strlen($str);?>該腳本在 php 7.4 上運(yùn)行不會(huì)崩潰,但是當(dāng)我將 str_pad 長(zhǎng)度參數(shù)增加到 1523688 時(shí),它就會(huì)終止并顯示上述消息。這個(gè)腳本在php7.2上運(yùn)行,當(dāng)長(zhǎng)度參數(shù)為1515495時(shí),但當(dāng)長(zhǎng)度參數(shù)為1515496時(shí)崩潰。我在同一服務(wù)器上用php5.6測(cè)試它,運(yùn)行沒有任何問題。無論我如何運(yùn)行它,apache 還是 cli,腳本都會(huì)崩潰。修改ini后apache已經(jīng)重新啟動(dòng),這不是問題。我用 2GB memory_limit 對(duì)其進(jìn)行了測(cè)試,并且收到了相同的錯(cuò)誤消息。僅當(dāng)我將 memory_limit 更改為 -1 時(shí),它才有效,但我認(rèn)為這不是正確的解決方案,我的意思是,如果 512MB 對(duì)于這個(gè)小腳本來說不夠,那就有問題了。在我看來,php 在開始運(yùn)行時(shí)分配了 2097152 內(nèi)存,第一次嘗試分配更多系統(tǒng)內(nèi)存時(shí)它崩潰了。在我自己的電腦上同樣的apache和php 7版本,沒有問題。環(huán)境:處理器:Intel Xeon E5-2620內(nèi)存:8GB適用于:Win10專業(yè)版64位Web 服務(wù)器:Apache/2.4.29 (Win64) Apache Lounge VC11 服務(wù)器構(gòu)建時(shí)間:2017 年 11 月 6 日 11:17:28PHP:7.4.8 和 7.2.32有人知道什么會(huì)導(dǎo)致這樣的錯(cuò)誤嗎?編輯皮蘭寫了一個(gè)略有不同的劇本。我在有問題的計(jì)算機(jī)上執(zhí)行了腳本,結(jié)果如下:string(3) "2GB"mem @ C:\web\test.php 15: 0.37 MB (2.00 MB; peak: 0.41 MB)Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 10000024 bytes) in C:\web\test.php on line 16正如你所看到的,內(nèi)存限制是 2GB,當(dāng)它嘗試分配超過 2MB 時(shí),它仍然會(huì)死掉。
查看完整描述

1 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

看看你的memory_limit. 錯(cuò)誤說Allowed memory size of 2097152 bytes exhausted。哪個(gè)不是2GB

console.log(2097152 / 2**20 + "MB");

var_dump(ini_get('memory_limit'));


function memstat($file, $line) {

    echo sprintf(

        'mem @ %s %d: %.2f MB (%.2f MB; peak: %.2f MB)' . PHP_EOL,

        $file,

        $line,

        memory_get_usage() /2**20,

        memory_get_usage(true) /2**20,

        memory_get_peak_usage() /2**20

    );

}


memstat(__FILE__, __LINE__);

$str = str_pad('', 9999999, ' ');

memstat(__FILE__, __LINE__);

print 'end '.strlen($str);

工作示例。


輸出

string(3) "64M"

mem @ /in/BHqWd 16: 0.37 MB (2.00 MB; peak: 0.41 MB)

mem @ /in/BHqWd 18: 9.91 MB (11.54 MB; peak: 9.91 MB)

end 9999999


查看完整回答
反對(duì) 回復(fù) 2023-09-22
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)