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.