Proč někde vznikají konflikty s eAcceleratorem?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mrtnzlml
Člen | 140
+
0
-

Prvně bych rád zdůraznil, že to co zde budu teď psát není kvůli tomu, že já mám problém, ale kvůli tomu, že bych tento problém chtěl pochopit a pokud možno i zajistit jeho vyřešení. Omluvte prosím proto jestli je toto téma nevhodné, nebo zbytečné. Pro mě je to důležité.

Mluvím přesně o tom, že když někdo vytvoří web v Nette a poté ho přesune na ostrý server, spadne do erroru 500 a šmitec. Je to velmi známý problém, nemusím ho snad více rozepisovat. V logu potom zůstanou asi dva druhy hlášek, ale efekt to má stejný a řešení je taky známé a to vypnutí eAcceleratoru pomocí htaccess. Toto řešení je však nepohodlné a pro někoho, kdo se s ním setká poprvé je i velmi nepříjemné.

Nad tímto problémem už jsem progooglil hodně času (ze zoufalosti už musím napsat sem prosbu o pomoc). Poslední pokus byl eAcc s direktivou –with-eaccelerator-doc-comment-inclusion (kvůli persistentním parametrům – jen nápad), to však k mému zklamání vůbec nepomohlo. Nevím, jestli to byl jeden z problémů a jsou další, ale nestala se žádná změna.

Rád bych proto požádal někoho z Nette znalých o prozkoumání problému do hloubky a pomoc. Jak poštelovat eAcc(0.9.6) aby spolupracoval a vyřešil se problém pro spoustu lidí? Napadá mě, že nemusí být úplně problém s eAcc, protože jinde Nette funguje bez problémů, v tom případě v čem je háček?

Jan Tvrdík
Nette guru | 2570
+
0
-

mrtnzlml wrote: Je to velmi známý problém, nemusím ho snad více rozepisovat.

A zrovna já ho neznám. Kvůli čemu to nefunguje?

mrtnzlml
Člen | 140
+
0
-

Možná to přišlo známé jen mě, protože mi to teď pořád leží v hlavě, k tomu ten google, ale namátkou pouze z tohoto fóra:
https://forum.nette.org/…tny-callback
https://forum.nette.org/…ova-a-dokola
https://forum.nette.org/…plne-zaklady
https://forum.nette.org/…elerator-fix (zde se zrodil ten pokus s direktivou)

Schválně jsem vybral ty, ve kterých je řešením
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
Bohužel toto všechny uspokojilo, ale přeci vypnutím rozbitého motoru ho neopravím…
V žádném případě nechci a neházím špínu na Nette, spíš hledám špínu jinde, ale nenalézám. V čem by mohl být tedy háček?

Jan Tvrdík
Nette guru | 2570
+
0
-

mrtnzlml wrote:
V čem by mohl být tedy háček?

Pokud eAccelerator způsobuje error 500, tak je to chyba eAcceleratoru, protože ten má fungovat transparentně, tedy neměnit chování kódu a neshazovat funkční aplikace. Pravděpodobně je v Nette nebo v kódu tvojí aplikace nějaká konstrukce, kterou eAccelerator nezvládne. Je tedy potřeba tuto konstrukci izolovat, tj. sestavit nejmenší možný kód, který eAccelerator nezvládne.

Majkl578
Moderator | 1364
+
0
-

eAccelerator je mrtvý projekt. Je tedy jen otázkou, jestli má vůbec smysl hledat příčinu problémů (ostatně s eAcceleratorem byly věčně jen problémy, viz anotace) a následně eAcceleratoru přizpůsobovat Nette. Je jen otázkou času, než umře úplně (společně s PHP 5.3).

mrtnzlml
Člen | 140
+
0
-

Znova bych rád zdůraznil, že se nejedná o mojí aplikaci, ale obecně o všechny projekty u kterých se tento problém řešil a vyřešil vypnutím eAcceleratoru. A vzhledem k tomu, že:
Fatal error: Function name must be a string in /home/users/user/domain.tld/web/nette/libs/Nette/Loaders/RobotLoader.php:255
Což nezní jako uživatelem nevhodně napsaná konstrukce soudím, že vzniká konflikt v hlubší úrovni na (za) kterou uživatel nemůže. Tento řádek jsem vytáhl z posledního testování a zkoušení.
Momentálně se mi to vůbec nehodí, ale myslím si, že když nasadím vedle NetteFW samotný index, dopadne to stejně. To můžu vyzkoušet až to bude možné…

mrtnzlml
Člen | 140
+
0
-

Majkl578 napsal(a):

eAccelerator je mrtvý projekt. Je tedy jen otázkou, jestli má vůbec smysl hledat příčinu problémů (ostatně s eAcceleratorem byly věčně jen problémy, viz anotace) a následně eAcceleratoru přizpůsobovat Nette. Je jen otázkou času, než umře úplně (společně s PHP 5.3).

To je velmi zajímavý názor. Ještě počkám, jestli někdo přijde ještě s něčím, promyslím to a je myslím možné alespoň se pokusit navrhnout změnu.

dfx413
Člen | 9
+
0
-

Není jednodušší místo eAcceleratoru použít APC?

mrtnzlml
Člen | 140
+
0
-

Nestarám se o technickou stránku věci, ale APC prý nefunguje kvůli https://bugs.php.net/bug.php?…