Při vyhození výjimky (v komponentě z widget) mrzne apache
- ales.kafka
- Člen | 34
Předně, mám nainstalovaný Apache/2.2.10 (Win32) PHP/5.2.4 a používám nejnovější revizi Nette z SVN (momentálně 410).
Problém: Pokud mám v šabloně použitý widget (např. {control item}) a daná komponenta ještě nebyla inicializována pomocí ->getComponent(‚item‘) a je přitom vyhozena výjimka, tak se mi zaseká celý apache, procesor se vytíží na 98% procent a musím apache ručně restartovat.
U komponent používám vylepšenou komponentu přímo z Nette. Má někdo podobnou zkušenost nebo nějaký nápad, proč je se apache a php takhle chová? Pokud je to verzí, tak nebude problém přeinstalovat.
Editoval ales.kafka (14. 7. 2009 2:17)
- ales.kafka
- Člen | 34
Momentální stav je takový, že se vyhodí výjimka a apache zamrzne až při generování bluescreenu – přesněji v sekci Call Stack; ještě konkrétněji je to při vypisování source code z Control→ getWidget () šablony.
Mezitím se chystám na upgrade apache a na php 5.2.10, tak uvidím, zda chybu neprodukuje zastaralé nádobíčko.
pro jistotu tu napíšu i minimální kousek kódu, který mi vyvolává zmíněnou chybu.
TestPresenter.php
<?php
class TestPresenter extends Presenter {
protected function createComponentTest()
{
throw new Exception("Zkouška");
}
}
?>
default.phtml.
{control test}
Aktualizováno na Apache/2.2.11 (Win32) PHP/5.2.10 a chyba přetvrvává.
Editoval ales.kafka (14. 7. 2009 11:43)
- ales.kafka
- Člen | 34
Tak, chyba nalezena. Vyzkoušel jsem čistou aplikaci s jedním Presenterem a zde to chybu nedělalo. Tak jsem postupně vyhazoval jednotlivé části a zkoušel chování. Bylo to způsobeno vlastní nedbalostí, kdy jsem v bootstapu zapomněl nastavení
<?php
Debug::$maxDepth = 99;
?>
a tím pádem se některá část bluescreenu natahovala tak dlouho, až odvařila celý apache.
Zda tam je nějaký bug netuším, protože pokud se výjimka vyhodila během
<?php
->getComponent('test');
?>
, tak se vše načítalo průměrně rychle, ale při
{control test}
nastala ona chyba. Aspoň mě to přinutilo k instalaci php 5.2.10 a nové verze apache.
- muta
- Člen | 21
dělá mi teď to samé – při prvním načtení komponenty ( ať už v šabloně nebo presenteru) se zobrazí bílá stránka a apache jde do věčných lovišť.
Debug::$maxDepth = 99; // to jsem ani nenastavoval
win 7
PHP 5.2.9–2
Apache/2.2.11 (Win32) PHP/5.2.9–2
Nette Framework 0.9 (revision 8de354c released on 2009–08–21)
// edit
Vyřešeno
Dělal to řádek parent::createComponent($name);
viz:
<?php
protected function createComponentEditForm() {
parent::createComponent($name);
....
}
?>
nahodil mi to tam automaticky netbeans a pokud jsem ten řádek umáz, tak vše funguje jak má !
snad to někomu pomůže :)
Editoval muta (23. 8. 2009 23:43)