Skip to content

About

A small and simple FastCGI client written in Erlang

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

erl_fastcgi

A small and simple FastCGI client written in Erlang.

Build

make

Installing

In your Rebar project:

{deps, [
  {erl_fastcgi, {git, "git://github.com/marcelog/erl_fastcgi", {ref, "master"}}}
]}.

Use example

test() ->
  Host = "127.0.0.1",
  Port = 9000,
  TryToReconnectEveryMillis = 1000,

  {ok, FastCGIConnection} = erl_fastcgi:start_link(
    Host, Port, TryToReconnectEveryMillis
  ),

  ARandomRequestId = 600,
  Body = <<"a=1&b=2">>,
  erl_fastcgi:run(FastCGIConnection, ARandomRequestId, [
    {"SCRIPT_FILENAME", "/tmp/test2.php"},
    {"QUERY_STRING", "a=1&b=2"},
    {"REQUEST_METHOD", "POST"},
    {"CONTENT_TYPE", "application/x-www-form-urlencoded"},
    {"HTTP_CONTENT_TYPE", "application/x-www-form-urlencoded"},
    {"CONTENT_LENGTH", integer_to_list(size(Body))},
    {"HTTP_CONTENT_LENGTH", integer_to_list(size(Body))},
    {"SCRIPT_NAME", "test2.php"},
    {"GATEWAY_INTERFACE", "CGI/1.1"},
    {"REMOTE_ADDR", "1.1.1.1"},
    {"SERVER_PROTOCOL", "HTTP/1.1"},
    {"REMOTE_PORT", "1111"},
    {"SERVER_ADDR", "127.0.0.1"},
    {"SERVER_PORT", "3838"},
    {"SERVER_NAME", "host.com"}
  ], <<>>),

  test_wait(FastCGIConnection).

test_wait(FastCGIConnection) ->
  receive
    {fast_cgi_done, _} -> ok;
    X ->
      io:format("Got: ~p~n", [X]),
      test_wait(FastCGIConnection)
  after
    5000 -> erl_fastcgi:close(FastCGIConnection)
  end.

Your process should get messages like these:

{fast_cgi_stdout,600,<<"X-Powered-By: PHP/5.6.30\r\nContent-type: text/html; charset=UTF-8\r\n\r\n">>}
{fast_cgi_stdout,600,<<"<html>">>}
{fast_cgi_stdout,600,<<"</html>">>}
{fast_cgi_done,600}
{fastcgi_request_done,600,fast_cgi_connection_reset}

Pooling

There is no pooling support out of the box, but you can use your favorite worker pool library to run as many of these as needed.

Related reads

License

The source code is released under Apache 2 License.

Check LICENSE file for more information.

About

A small and simple FastCGI client written in Erlang

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages