Proč někde vznikají konflikty s eAcceleratorem?
- mrtnzlml
- Člen | 140
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 | 2595
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
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 | 2595
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.
- mrtnzlml
- Člen | 140
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
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.
- mrtnzlml
- Člen | 140
Nestarám se o technickou stránku věci, ale APC prý nefunguje kvůli https://bugs.php.net/bug.php?…