Google App Engine & PHP – seznam bodů pro funkční Nette

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

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 :-)

Majkl578
Moderator | 1364
+
0
-

Co zkusit Nette Requirements Checker? Je součástí distribuce.

potapnik
Člen | 127
+
0
-

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
+
0
-

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
+
0
-

Musel by si přepsat všechny souborvý úložiště třeba na memcached.

Pro začátek:

  1. přepsat Configurator::createRobotLoader a nahradit storage (za Nette\Caching\Storages\MemcachedStorage)
  2. přepsat Configurator::createContainer a nahradit storage (za Nette\Caching\Storages\MemcachedStorage)
  3. nahradit službu cacheStorage (za Nette\Caching\Storages\MemcachedStorage)
  4. nahradit službu templateCacheStorage (za Nette\Caching\Storages\MemcachedStorage)
  5. 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
+
0
-

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
+
0
-

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á evalová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 evalování o výkon.