Hidratacija Doctrine 1.2 ne uspijeva s HYDRATION_RECORD, ali radi s HYDRATION_ARRAY

Imam kod koji savršeno radi s Doctrine_Core :: HYDRATION_ARRAY , ali pada sa Doctrine_Core :: HYDRATION_RECORD . Stranica se učitava oko dvije minute i prikazuje standardnu ​​poruku o grešci preglednika, što je otprilike

Connection to the server was lost during the page load.

(Lokalizirao sam pretraživač, pa to nije tačna poruka o grešci, već prevedeno).

Korištenje mysql naredbenog retka Prikaži listu procesa output

+-----+--------+-----------------+--------+---------+------+-------+------------------+
| Id  | User   | Host            | db     | Command | Time | State | Info             |
+-----+--------+-----------------+--------+---------+------+-------+------------------+
| 698 | root   | localhost:53899 | NULL   | Query   |    0 | NULL  | show processlist |
| 753 | *user* | localhost:54202 | *db1*  | Sleep   |  102 |       | NULL             |
| 754 | *user* | localhost:54204 | *db2*  | Sleep   |  102 |       | NULL             |
+-----+--------+-----------------+--------+---------+------+-------+------------------+

Sam kôd:

 $q = Doctrine_Query::create()
        ->select("fc.*")
        ->from("Card fc")
        ->leftJoin("fc.Fact f")
        ->where("f.deckid=?", $deck_id);
  $card = $q->execute(array(), Doctrine_Core::HYDRATE_RECORD);
  //Commenting the above line and uncommenting below line leads to an error
  //$card= $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);

Dakle, mislim da upit nije popunjen ispravnim SQL-om. Hovewer, $ q-> getSqlQuery () daje ispravan SQL koji se savršeno izvodi ako se izvršava putem naredbenog retka ili phpMyAdmin.

Konfiguracija servera:

Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k mod_wsgi/3.3 Python/2.7.1 PHP/5.2.12
Mysql 5.1.40-community

Sve radi na localhostu, tako da to nije problem s vezom.

Količina podataka za taj određeni upit je vrlo mala - oko desetak zapisa, tako da to nema nikakve veze s memorijom ili vremenom ograničenja. safe_mode je isključen , display_errors je na , prijava grešaka je 6135 .

Može li neko ukazati na neke nagovještaje ili upozorenja koja mi nedostaju?

UPDATE: što je najčudnije da s tim povremeno radi HYDRATION_RECORD .

UPDATE2: to ruši se kada pokušavam dohvatiti nešto iz upita, npr getFirst () . Bez dohvaćanja to funkcionira, ali stvarno mi ne treba obrazac upita za koji ne mogu dohvatiti podatke.

UPDATE3: Zaobišao sam ovaj problem, ali i dalje me zanima što se događa.

Ažuriranje 4:

SQL upit:

SELECT f.id AS f__id, f.createdat AS f__createdat, f.updatedat AS f__updatedat,
    f.flashcardmodelid AS f__flashcardmodelid, f.source AS f__source, 
    f.content AS f__content, f.md5 AS f__md5 
FROM flashcard f 
LEFT JOIN fact f2 ON f.id = f2.flashcardid AND (f2.deleted_at IS NULL) 
WHERE (f2.deckid = 19413)

Izlaz:

f__id   f__createdat            f__updatedat            f__flashcardmodelid     f__source           f__content
245639  2011-08-05 20:00:00     2011-08-05 20:00:00     179                     jpod lesson 261     {"source":"\u7f8e\u5473\u3057\u3044","target":"del... 

Dakle, sam upit je u redu, podaci se preuzimaju prema očekivanjima. Treba li vam definicija modela?

Ažuriranje 5 Kada se pokreće upit sa HYDRATE_RECORD httpd.exe troši 100% jedne od CPU jezgara.

Konačno ažuriranje Don Ne znam zašto, ali sada to funkcionira ... Nisam ništa promijenio. Izgleda da se samo čekalo kada dam nagradu za ovo pitanje. :) Ali ipak, kao što sam već dao nagradu, cijenimo svaku ideju koja je razlika između HYDRATE_ARRAY i HYDRATE_RECORD koja bi mogla srušiti skriptu.

7
задан J0HN 26 August 2011 в 12:02
поделиться