<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 26, 2015 at 6:18 PM, Michael Van Canneyt <span dir="ltr"><<a href="mailto:michael@freepascal.org" target="_blank">michael@freepascal.org</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
On Mon, 26 Jan 2015, silvioprog wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
On Mon, Jan 26, 2015 at 3:32 PM, silvioprog <<a href="mailto:silvioprog@gmail.com" target="_blank">silvioprog@gmail.com</a>> wrote:<br>
      On Mon, Jan 19, 2015 at 7:17 PM, Michael Van Canneyt <<a href="mailto:michael@freepascal.org" target="_blank">michael@freepascal.org</a>> wrote:<br>
            On Mon, 19 Jan 2015, silvioprog wrote: <br>
<br>
            I haven't found any.<br>
<br>
            Michael.<br>
<br>
<br>
Hm... =/<br>
<br>
[...] <br>
<br>
I'll make a small FPC sample with GET in SCGI and send it here ...<br>
</blockquote>
<br></span>
Great, please do.<br></blockquote><div><br></div><div>Done! =)</div><div><br></div><div>Tested with FCL and Synapse (demo in attached or in Dropbox: <a href="https://www.dropbox.com/s/rei2fj5papyqium/SCGI_GET.zip?dl=0">https://www.dropbox.com/s/rei2fj5papyqium/SCGI_GET.zip?dl=0</a>). 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.</div><div><br></div><div>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:</div><div><br></div><div>1. download the nginx server <a href="http://nginx.org/en/download.html">http://nginx.org/en/download.html</a> (I'm using the nginx-1.7.9);</div><div>2. unpack nginx-1.7.9.zip, and in nginx-1.7.9 folder, open the nginx-1.7.9\conf\nginx.conf file;</div><div>3. in nginx.conf file, add the following content (see my nginx.conf here: <a href="http://pastebin.com/7xB6nmJz">http://pastebin.com/7xB6nmJz</a>, line 79):</div><div><div>        location /test {</div><div>            include   scgi_params;</div><div>            scgi_pass localhost:8080;</div><div>        }</div></div><div>4. open the CMD, go into the nginx-1.7.9 folder using CD, and execute nginx.exe;</div><div>5. compile and run the SCGI_GET\FCL\project1.lpr project;</div><div>6. open the <a href="http://localhost/test">http://localhost/test</a> URL in you browser;</div><div>7. enjoy! =)</div><div><br></div><div>Please tell me if those steps also worked for you.</div><div><br></div><div>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.</div><div><br></div><div>Now I need to test the SCGI performance comparing it with FastCGI (+- 6.000 request / sec) and Apache module (+- 14.000 requests / sec).</div><div><br></div><div>I'm very impressed with the ease in debugging a SCGI application.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
The strange thing of scgi is that the spec is so vague, I am surprised there are any implementations...<span class=""><font color="#888888"><br>
<br>
Michael.</font></span></blockquote><div><br></div><div>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: <a href="https://gist.github.com/ArtemGr/38425">https://gist.github.com/ArtemGr/38425</a>. I can adapt it to Pascal too.</div><div><br></div><div>-- </div></div><div class="gmail_signature">Silvio Clécio<br>My public projects - <a href="http://github.com/silvioprog" target="_blank">github.com/silvioprog</a></div>
</div></div>