2012-07-20 23 views
0

我正在使用PDO將行提取到對象。 我有兩個問題:使用ORM時的PHP性能和內存

1-在對象中使用私有屬性並使用可能調用另一個函數本身的__get()方法返回它們,例如getLabel(),它在檢索大量記錄時如何影響PHP性能?可以接受嗎?

一個例子:

class model 
{ 
    private p1; 
    public p2; 
    function __get($name) 
    { 
    return $this->{'get'.$name}(); 
    } 
    function getP1() 
    { 
    return ''; 
    } 
} 

$obj = new model; 
$obj->p1 VS. $obj->p2 

2 - 對於多列,定義在類定義所有列的類,然後選擇其中的一些檢索大量的記錄時,如何會影響到PHP的內存使用它們是在具有空值的對象中定義的?可以接受嗎?

我不是一次一個取一行,也不是一次取一行。

一個例子:

class model 
{ 
    public $p1 = null; 
    public $p2 = null; 
    public $p3 = null; 
    public $p4 = null; 
    public $p5 = null; 
    public $p6 = null; 
    public $p7 = null; 
    public $p8 = null; 
    public $p9 = null; 
    public $p10 = null; 
} 

sql: select p1, p2 from model limit 100 

每個對象具有8個未使用屬性。這如何影響PHP的性能和內存?

儘管我知道教義使用這兩種模式。他們如何克服這種影響PHP性能?

回答

1

在對象使用私有屬性和使用檢索大​​量的記錄時,它可以調用另一個函數本身例如getLabel(),這是如何影響性能的PHP __get()方法返回呢?可以接受嗎?

與其他常見解決方法相比,魔術方法相當昂貴。如果沒有看到您的應用程序,確切的說有多昂貴。

__get/__set/__call performance questions with PHP

對於多列,定義在類定義所有列的類,然後選擇其中的一些檢索大量的記錄時,如何影響,因爲它們是在對象中定義的PHP內存使用情況有空值?可以接受嗎?

只要您使用PDO遍歷結果集,您的內存不應該太高。但是,如果迭代結果並將其保存到集合中,那麼整個結果集將佔用大量內存。與往常一樣,您希望選擇可能的最少量的字段和行。