[fpc-pascal] SCGI in Pascal?

silvioprog silvioprog at gmail.com
Tue Jan 27 16:18:39 CET 2015

On Mon, Jan 26, 2015 at 6:18 PM, Michael Van Canneyt <michael at freepascal.org
> wrote:
> On Mon, 26 Jan 2015, silvioprog wrote:
>> On Mon, Jan 26, 2015 at 3:32 PM, silvioprog <silvioprog at gmail.com> wrote:
>>       On Mon, Jan 19, 2015 at 7:17 PM, Michael Van Canneyt <
>> michael at freepascal.org> wrote:
>>             On Mon, 19 Jan 2015, silvioprog wrote:
>>             I haven't found any.
>>             Michael.
>> Hm... =/
>> [...]
>> I'll make a small FPC sample with GET in SCGI and send it here ...
> Great, please do.

Done! =)

Tested with FCL and Synapse (demo in attached or in Dropbox:
https://www.dropbox.com/s/rei2fj5papyqium/SCGI_GET.zip?dl=0). My demo is
just a "hello world", showing how to do a GET in a SCGI application. I'm
using only sockets, but it can be easily implemented with HTTPDefs.pas
pre-implementation, to make something like custscgi.pas.

Below you can see how to test my small app in seven steps, on Windows 7 and
using nginx as HTTP server. It is very easy to do, please see:

1. download the nginx server http://nginx.org/en/download.html (I'm using
the nginx-1.7.9);
2. unpack nginx-1.7.9.zip, and in nginx-1.7.9 folder, open
the nginx-1.7.9\conf\nginx.conf file;
3. in nginx.conf file, add the following content (see my nginx.conf here:
http://pastebin.com/7xB6nmJz, line 79):
        location /test {
            include   scgi_params;
            scgi_pass localhost:8080;
4. open the CMD, go into the nginx-1.7.9 folder using CD, and execute
5. compile and run the SCGI_GET\FCL\project1.lpr project;
6. open the http://localhost/test URL in you browser;
7. enjoy! =)

Please tell me if those steps also worked for you.

You can test it in Apache too (Windows or Linux), I tested it using the
steps that I told before and it worked like a charm too.

Now I need to test the SCGI performance comparing it with FastCGI (+- 6.000
request / sec) and Apache module (+- 14.000 requests / sec).

I'm very impressed with the ease in debugging a SCGI application.

The strange thing of scgi is that the spec is so vague, I am surprised
> there are any implementations...
> Michael.

Me too. But you can use the same CGI spec to get env. variables,
query_string etc. SCGI is very easy to be implemented like CGI. I've tested
this draft to get all fields of a HTML form with POST:
https://gist.github.com/ArtemGr/38425. I can adapt it to Pascal too.

Silvio Cl├ęcio
My public projects - github.com/silvioprog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20150127/15bef819/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SCGI_GET.zip
Type: application/zip
Size: 3711 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20150127/15bef819/attachment.zip>

More information about the fpc-pascal mailing list