我目前正在開發一個使用PDO的PHP應用程序。我正在寫一個導入,它讀入一個CSV文件,檢查數據庫中的記錄,以及更新,刪除等等......PHP 5.3.5 PDO FETCH_OBJ內存泄漏?
我注意到的東西是這個腳本使用的內存似乎很高,它似乎可以做我的執行查詢的方式。參閱下面的是用於在CSV每一行執行的示例性查詢:
$qry = "SELECT * FROM company WHERE id = 1";
$sth = $this->prepare($qry);
$sth->execute();
$sth->setFetchMode(PDO::FETCH_INTO, new Company());
$sth->fetch();
對於上述memory_get_peak_usage()= 6291456
當使用以下:
$qry = "SELECT * FROM company WHERE id = 1";
$sth = $this->prepare($qry);
$sth->execute();
$sth->setFetchMode(PDO::FETCH_CLASS, "Company");
$sth->fetch();
用於上述memory_get_peak_usage ()= 524288
正如你所看到的差異是相當大的。
我想我已經3個問題..
- 是否有使用PDO :: FETCH_OBJ時內存泄漏在PHP 5.3.5?
- 使用FETCH_CLASS而不是FETCH_OBJ有什麼區別嗎?
- 有沒有其他人遇到同樣的問題?
公司類很簡單:
class Company {
function __construct(){}
/**classvars**/
public $_tablename = 'company';
public $transient;
public $id;
public $name;
/**endclassvars**/
}
@MikeB:但他所問的問題是爲什麼激烈的差異。 –
@Martin你有理由誤解了'PDO :: FETCH_OBJ'。查看我的回答 – hek2mgl
@MikeB公司類的內容與它無關......他以任何方式實例化公司對象。公司班級*做什麼都沒有關係,因爲它們在兩種情況下都做同樣的事情。 – meagar