本文目錄一覽:
- 1、php 內存不夠怎麼解決
- 2、php 難題 內存佔用
- 3、如何解決php腳本運行佔用內存過大無法釋放的問題
- 4、請教PHP數組內存耗用太多問題的解決方法
- 5、php中sleep()函數會不會大量銷號系統內存或者CPU
- 6、如何解決PHP查詢大量數據內存耗盡的問題
php 內存不夠怎麼解決
進入php源程序目錄中的ext目錄中,這裡存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd curl
執行phpize生成編譯文件,phpize在PHP安裝目錄的bin目錄下
/usr/local/php5/bin/phpize
運行時,可能會報錯:Cannot find autoconf. Please check your autoconf installation and
the $PHP_AUTOCONF
environment variable is set correctly and then rerun this
script.,需要安裝autoconf:
yum install autoconf(RedHat或者CentOS)、apt-get install
autoconf(Ubuntu Linux)
/usr/local/php5/bin/php -v
執行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,
這裡會報錯,可以根據錯誤信息去排查!
php 難題 內存佔用
兩個概念不同,函數獲取是PHP.EXE(或者你的HTTPD.EXE)給此腳本分配的內存,而操作系統分配給進程的內存會大很多,我下面的沒有使用任何變數的簡單語句腳本,就兩個語句,一個輸出內存使用,一個暫停一下,程序顯示腳本分陪內存100多K,而操作系統顯示3M,如下圖:
當然,你可以看看你的簡單腳本佔用內存多少,上G確實太驚人了。
如何解決php腳本運行佔用內存過大無法釋放的問題
默認是程序執行完的,
如果你使用完了,想消毀,可以使用
unset
來銷毀釋放
例:
unset($str);
請教PHP數組內存耗用太多問題的解決方法
一般來說,PHP數組的內存利用率只有 1/10, 也就是說,一個在C語言裡面100M 內存的數組,在php裡面就要1G。
特別是在PHP作為後台伺服器的系統中,經常會出現內存耗費太大的問題。
因為這個是語言的問題,常規方案比較難以解決。下面是一種通過string 解決的方案。
$total = 100000;
$double = “”;
for ($i = 0; $i $total; $i++)
{
$double .= pack(“d”, $i + 0.1);
}
for ($i = 0; $i $total; $i++)
{
unpack(“@” . ($i * 8) . “/d”, $double);
}
php中sleep()函數會不會大量銷號系統內存或者CPU
會。
正常情況下php以最快速度執行完腳本,將執行結果傳給瀏覽器。你要考慮有很多用戶訪問你網站的情況,因為執行腳本的時候被sleep了,導致每個用戶瀏覽網頁的時候php都需要更長的時間去執行你的腳本,而腳本執行完畢之前內存是一直被php引擎佔用的。所以當訪問用戶多的時候,就會導致有很多php引擎的實例同時運行,佔用很多內存,但是這些php引擎卻受到腳本的指使而在那邊sleep(說得粗俗一點就是占著茅坑不拉屎)(正常情況下是執行完以後內存就釋放了)。就好像八行道的大馬路,如果只有一個司機車子停在中間然後睡覺,其他道路暫時還能通;但是如果有八輛車的司機並排停在路中間睡覺,這馬路就不要想暢通了
cpu的話……好像影響不大,最多就是操作系統在調度進程線程的時候要多檢查幾個而已,沒感覺。
如何解決PHP查詢大量數據內存耗盡的問題
這個問題在PHP的官方網站上叫緩衝查詢和非緩衝查詢(Buffered and Unbuffered queries)。PHP的查詢預設模式是緩衝模式。也就是說,查詢數據結果會一次全部提取到內存里供PHP程序處理。這樣給了PHP程序額外的功能,比如說,計算行數,將指針指向某一行等。更重要的是程序可以對數據集反覆進行二次查詢和過濾等操作。但這種緩衝查詢模式的缺陷就是消耗內存,也就是用空間換速度。
相對的,另外一種PHP查詢模式是非緩衝查詢,資料庫伺服器會一條一條的返回數據,而不是一次全部返回,這樣的結果就是PHP程序消耗較少的內存,但卻增加了資料庫伺服器的壓力,因為資料庫會一直等待PHP來取數據,一直到數據全部取完。
很顯然,緩衝查詢模式適用於小數據量查詢,而非緩衝查詢適應於大數據量查詢。
原創文章,作者:X1NVT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129569.html