Ticket #1658 (closed バグ指摘: 修正済)
SC_Query の各種メソッドでプレースホルダの数に誤りがあるとメモリリークが発生する
| Reported by: | Seasoft | Owned by: | Seasoft |
|---|---|---|---|
| Priority: | 中 | Milestone: | EC-CUBE2.13.0 |
| Component: | その他 | Version: | 2.12.0 α |
| Keywords: | Cc: | ||
| 修正済み: | yes |
Description (last modified by Seasoft) (diff)
メモリリークが発生しない例
$objQuery =& SC_Query_Ex::getSingletonInstance();
for ($i = 1; $i <= 10000; $i++) {
$objQuery->query('SELECT CAST(? as int)', array(0));
}
メモリリークが発生する例
$objQuery =& SC_Query_Ex::getSingletonInstance();
for ($i = 1; $i <= 10000; $i++) {
$objQuery->query('SELECT CAST(? as int)', array(0, 0)); // XXX
}
なお、#1657 を解決できれば、本件は対応が不要となりそう。
下記だと、GC が動作しているような動きが見られる。GC が動作しないパターンがあるのか、GC に不具合があるのかまでは特定できていない。
for ($i = 1; $i <= 20000; $i++) {
$objQuery->select('? = ?', '', '', array('1', '1', '1'));
}
r23019 やや強引な実装だが、memory_limit = 2M の環境で、10000 回のループを実行できたので、とりあえず大幅に改善したと考える。
Change History
comment:1 Changed 14 years ago by Seasoft
- Summary changed from SC_Query の各種メソッドでプレースホルダの数に誤りがあるとメモリーリークが発生する to SC_Query の各種メソッドでプレースホルダの数に誤りがあるとメモリリークが発生する
Note: See
TracTickets for help on using
tickets.
