Nette\Database masssssive memory leaks

před 6 lety

Filip Procházka
Moderator | 4692
+
0
-

Nebudu tady brečet, že jsem zabil 5 dní hledáním chyby… Tak jo budu… 5 dní jsem hledal chybu ve svém dokonalém kódu a ona tam nebyla!!

V PDO bude nějaký hnusný error, protože když zakomentuju tenhle řádek, najednou vše funguje.

class Nette\Database\Statement extends \PDOStatement
{
    protected function __construct(Connection $connection)
    {
//      $this->setFetchMode(PDO::FETCH_CLASS, 'Nette\Database\Row', array($this));
    }

Destructor se nad řádkem podle všeho volá správně, ale paměť se neuvolní. Když ale PDO nepoužívá tuhle třídu, tak se paměť uvolňuje správně. Nemám už sílu ani hledat, jestli to není reportovaný bug v PHP. Jdu se opít, zdar.

$ php -v
PHP 5.3.11-dev (cli) (built: May 20 2012 15:54:01)
Zend Engine v2.3.0 with Xdebug v2.2.0

$ php -v
PHP 5.4.0 (cli) (built: Mar 27 2012 11:57:01)
Zend Engine v2.4.0

PS: tak jsem nakonec udělal test case https://gist.github.com/2771142

PS2: a reportoval jako bug PHPka https://bugs.php.net/bug.php?…

Editoval HosipLan (22. 5. 2012 22:14)

před 6 lety

Jan Tvrdík
Nette guru | 2539
+
0
-

Co takhle verze PHP a platforma?

před 6 lety

jtousek
Člen | 956
+
0
-

https://bugs.php.net/bug.php?…

Nevím jestli je to jeden bug nebo ne, tady je to hlášené s FETCH_INTO místo FETCH_CLASS.

Editoval jtousek (22. 5. 2012 21:20)

před 6 lety

David Grudl
founder | 6711
+
0
-

U PDO mě už nic nemůže překvapit. Třeba tuhle chybu jsem izoloval celý den.

před 6 lety

hrach
Člen | 1784
+
0
-

Tož, uz je to přepracované. Zatím je to takový work in progress, dostavam se konecne k rozsahlejsim zmenam.

https://github.com/…its/f-db-dev

před 5 lety

Filip Procházka
Moderator | 4692
+
0
-

OMG! Opět jsem na to narazil… a opět jsem to půl dne izoloval.

před 5 lety

tomask
Člen | 10
+
0
-

Jak to izoluješ? Bohužel jsem taky narazil. V importním CLI skriptu potřebuji vložit několik desetitisíc řádků a přesně na volání Nette\Database\Statement s parametrem v konstruktoru (který se volá s každým insertem/dotazem) mi to po pár tisísích řádcích přeteče :/

Dost opruz, modely napsané v Nette\Database a pro tento ůčl nepoužitelné.

před 5 lety

Filip Procházka
Moderator | 4692
+
0
-

Použil jsem hrachův fork, má v jedné z branchí tento leak opravený. Vyzkoušej, už netuším která to byla.

před 5 lety

spaze
Člen | 23
+
0
-

Aby vám to nebylo líto, tak jsem nad tímhle problémem taky teď spálil půl dne. Nebo vlastně půl noci. Ale ještěže mě napadlo použít ten Google.

Koukal jsem, že hrachův fix je už v masteru a milestone nastaven na 2.1, nějaká šance, že by se ty memleaky vyřešily už v 2.0.x?

Díky.

před 5 lety

David Grudl
founder | 6711
+
0
-

Jelikož si to vyžádalo kompletní překopání včetně BC breaků, tak to bude až ve 2.1. Soon!