Google App Engine & PHP – seznam bodů pro funkční Nette
- potapnik
- Člen | 127
Vzhledem k tomu, že GAE experimentálně podporuje PHP, akorát si vaší žádosti musí všimnout :-) tak jsem se rozhodl trochu zaexperimentovat a zjistit, co bude třeba pro běh Nette. Předně se asi bude muset napsat cache storage, která bude navázána na Google Cloud Storage, a dále logování jak do Google Cloud Storage, tak pomocí systémového volání, napadá vás, co všechno dalšího? PHPHINFO je zde: http://php-minishell.appspot.com/phpinfo, zatím nefunkční uploadovaná poslední stabilní verze Nette mi běží na jiném appspotu, vzhledem k latenci a následném standardním erroru nemá cenu ani odkazovat :-)
- potapnik
- Člen | 127
Problémy tam jsou, nicméně myslím, že řešitelné. Flock by měl jít nahradit ekvivalentem pro Google Cloud Storage, totéž Fileinfo / mime_content_type(), horší to zřejmě bude s rozpoznáním debug módu (SERVER_ADDR or LOCAL_ADDR), navíc se obávám, že systém logování chyb v Laděnce by musel projít značnou úpravou…mod_rewrite je irelevantní z hlediska toho, že GAE používá na konfiguraci cest app.yaml, kde se dá dosáhnout podobných pravidel. Otázka je, co formuláře a sessions… No, měl by vůbec někdo zájem se na tom se mnou podílet a rozklíčovat, co je potřeba? A má to vůbec smysl? A co na to Jan Tleskač?
- potapnik
- Člen | 127
Ufff, tak mám pocit, že Configurator a FileTemplate jsou přesně ty dvě věci, na kterých se to blokne…Nette zřejmě opravdu není schopno běžet na readonly webserveru, nebo s velkými obtížemi. I když, někde jsem narazil na Hosiplanovo řešení cacheStorage na REDISu, které by mohlo být výchozím vodítkem na Google Cloud Storage…otázka však zůstává: má to smysl se tím zaobírat? Bude to někomu užitečné?
- Tomáš Kolinger
- Člen | 136
Musel by si přepsat všechny souborvý úložiště třeba na memcached.
Pro začátek:
- přepsat Configurator::createRobotLoader a nahradit storage (za Nette\Caching\Storages\MemcachedStorage)
- přepsat Configurator::createContainer a nahradit storage (za Nette\Caching\Storages\MemcachedStorage)
- nahradit službu cacheStorage (za Nette\Caching\Storages\MemcachedStorage)
- nahradit službu templateCacheStorage (za Nette\Caching\Storages\MemcachedStorage)
- nahradit službu cacheJournal (v tomhle případě bude potřeba implementovat IJournal)
Zkoušel jsem to, sandbox jsem rozchodil ale byl menší problém s routováním a hlavně se stránka načítala 5s, dál jsem to už neřešil.
- Patrik Votoček
- Člen | 2221
chystám se s tím taky hrát zatím jsem na tom stejně jako ty ale tenhle víkend nebude moc času
- Majkl578
- Moderator | 1364
Hola, pokročili jste někdo nějak?
Aktuálně jsem si s tím chvíli hrál a narazil na nejeden problém v Nette,
které je až nepěkně zadrátované na používání souborového
systému.
Některé problémy sepsal Tomáš Kolinger, některé nejsou úplně tak, jak
píše:
– služba cacheStorage se musí vyměnit za použití Memcache,
– služba templateCacheStorage se za Memcache dá vyměnit jen stěží,
resp. znamenalo by to načítání šablon přes eval
každý
request;
– o cacheJournalu radši nemluvme :);
– Configurator::createRobotLoader by asi Memcache podstčit šla celkem
snadno;
– Configurator::createContainer má podobný problém jako
templateCacheStorage – použití Memcache znamená eval
ování
každý request;
– zadrátované použití tempDir do NetteExtension::setupCache – tohle
se fakt obejít nedá jinak, než buď úpravou Nette nebo zkopírováním a
upravením celé třídy (padá to na expandování tempDir);
A to určitě není všechno. Myslím, že i Latte někde spoléhá na soubory (bloky / snippety / ?).
Co se týče těch generovaných PHP souborů, s @matej21 jsme
nedávno na #posobota řešili, jak by to šlo udělat nějak rozumně, a
jediný soudný závěr bylo nějaké předgenerovávání DI kontejneru a
šablon ještě před uploadem do cloudu. Jelikož tam se nedá generovat na
read-only filesystem, ale jen do Memcache nebo cloudu, bál bych se u
eval
ování o výkon.