Witam!
Zaczynam dopiero swoją przygodę z Ruby i mam kilka wątpliwości, których Google nie rozwiewa. Ponieważ chcę zacząć od wykorzystania czystego języka Ruby jako skryptu CGI, muszę wybrać między CGI a FastCGI. O ile sposób działania CGI jest prosty, każde wywołanie serwera www uruchamia nową instancję skryptu, to nie wiem do końca o co chodzi z FastCGI, który ma stałe uruchomiony skrypt. Czy z punktu widzenia programisty muszę się tym faktem jakoś szczególnie martwić, co w przypadku gdy zajdzie konieczność obsługi więcej niż jednego wywołania serwera www w tym samym czasie (skoro fastcgi ma na stałe uruchomianą jedną instancję skryptu…)?
Dlaczego chcesz używać CGI?
A mogę używać czegoś innego w zastępstwie?
Surowe CGI jest trv i kvlt, nie zniechęcaj początkującego, Drogomir
Na razie się niczym nie martw. W pamięci będzie przeparsowany (do AST) kod skryptu, ale nie powinno to wpłynąć na np. inicjalizację i odczyt zmiennych weń.
Jako programista musisz wiedzieć, że aplikacja na FastCGI jest ładowana raz. Zatem jeśli przypiszesz coś do zmiennej globalnej, klasowej (@@var), instancyjnej klasowej (@var ale obiektu Klasy) to wiedz że te zmienne będą widoczne w następnych żądaniach (podobnie jak działanie rails na mongrelu/thinie itp). Przeciwnie do CGI, gdzie każde żądanie to ponowne odpalenie całego skryptu. Możesz czasem wykorzystać ten fakt do prostego keszowania danych, ale pamiętaj, że procesów FastCGI możesz mieć kilka, a dane między procesami nie są współdzielone.
Bez przesady
Nie chciałem zniechęcać, z ciekawości się pytałem, żeby wiedzieć do czego to ma być użyte.
herr3ro:
Jako alternatywy możesz użyć racka. Teamon ostatnio wkleił na blogu malutki snippet: http://teamon.eu/2009/01/05/rack-prosty-parser-haml/
Ewentualnie któregoś z prostych frameworków, na przykład sinatra.