<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>While troubleshooting Apache TimeOut for Plack vs CGI (<a href="https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=26128">https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=26128</a>), I discovered that Apache seems to respect TimeOut when measuring a timeout proxying requests to Plack. However, it actually *<b>doubles</b>* the time when running CGI scripts on its own.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve looked through the Apache httpd and apr source code, and it’s not obvious to me at a glance why this happens, but I think it’s important for us to realize this, because it means the solution presented by “Make processes that rely on background jobs run in CGI mode” <a href="https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=15218">https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=15218</a> might not always be necessary. Based on my investigation, it seems the reason some scripts work in CGI but not in Plack is simply because of the different way timeouts occur. If we just raise the ProxyTimeout to twice the value of TimeOut (ie change it to 600 to be 2*TimeOut), then we’ll be getting the same behaviour. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Of course, the real solution in these cases is still to use asynchronous processing via “Add a task queue” (<a href="https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22417">https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22417</a>). <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In any case, I thought it was important to share my findings, because it means we might actually be able to reduce our dependency on CGI now even before Bug 22417 is pushed. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>David Cook<o:p></o:p></p><p class=MsoNormal>Software Engineer<o:p></o:p></p><p class=MsoNormal>Prosentient Systems<o:p></o:p></p><p class=MsoNormal>72/330 Wattle St<o:p></o:p></p><p class=MsoNormal>Ultimo, NSW 2007<o:p></o:p></p><p class=MsoNormal>Australia<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Office: 02 9212 0899<o:p></o:p></p><p class=MsoNormal>Online: 02 8005 0595<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>