iT邦幫忙

0

PHP環境設定問題

php

如果想改變Server的設定
譬如說memory_limit
往往使用ini_set('memory_limit', '64M');會失敗
但使用.htaccess php_value memory_limit 64M
或者是在根目錄放php.ini memory_limit=64M
上述兩個方法的缺點是每個PHP都會被影響
據Server廠商說memory設定越大越大網頁會越慢
所以我想請教是不是有方法讓一開始的ini_set()就可以實現
讓我可以在個別頁面需要處理圖片的頁面使用大一點的記憶體就好

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

8
fillano
iT邦超人 1 級 ‧ 2010-06-09 12:01:12
最佳解答

記憶體是動態配置的,並不是你設memory limit之後他初始就會用這麼多。而且如果不是這樣,你在程式裡面也不可能用ini_set()來修改記憶體使用的限制。所以我會懷疑把他調大是否對於網頁速度真的有決定性的影響。

要讓php跑得快,通常的解法是用APC,另外就是控制檔案I/O。最常在無意間影響到效能的就是require_once(), include_once()以及include_path設定,沒用好的話他會在背後做directory scan而影響程式效能。另外,有空的話用xdebug看看你程式效能瓶頸是出在哪裡,問題應該就不多了吧...

你是在程式一開始就用ini_set()嗎?

chan15 iT邦新手 2 級 ‧ 2010-06-09 13:05:53 檢舉

我是用了上次提問的dom那個class,一用就掛了
http://simplehtmldom.sourceforge.net/
自己本身的東西沒有用到什麼記憶體
用ini_set()沒有用
在根目錄使用php.ini才work
但他會影響全部的php頁面
所以才想問有沒有讓單一頁面可以成功設定的方式

fillano iT邦超人 1 級 ‧ 2010-06-11 14:06:35 檢舉

memory_limit 是屬於 PHP_INI_ALL 的設定,所以也可以用perdir的方式來使用。既然ini_set()無法使用,你又不想影響到其他php程式,那另一個解法是把需要額外記憶體的php獨立放在一個目錄中,然後在這個目錄中用.htaccess來設定。

處理dom需要比較大的記憶體,雖然用起來比較簡單...

我要發表回答

立即登入回答