<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">PHP-DWS is <span id="result_box" class="short_text" lang="en"><span style="color: 
rgb(0, 0, 0);" title="">the abbreviation for "PHP Direct Web Server". &nbsp;It works much like fastcgi server with nginx,&nbsp;</span></span><div><span id="result_box" class="short_text" lang="en"><span style="color: 
rgb(0, 0, 0);" title=""><br></span></span></div><div><span id="result_box" class="short_text" lang="en"><span style="color: 
rgb(0, 0, 0);" title="">But nginx pass the request header of HTTP and socket file description of this connection to it</span></span>&nbsp;via&nbsp;</div><div>calling sendmsg(), and then PHP-dws read request body data from http connection , send&nbsp;response&nbsp;</div><div>data to&nbsp;the http connection directly.</div><div><br></div><div><span id="result_box" class="" lang="en"><span style="" title="">I 
simply draw their work in the following flow diagram£º</span></span></div><div><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></div><div><span id="result_box" class="" lang="en"><span style="" title=""><code>&nbsp;&nbsp; &nbsp; &nbsp;[PHP-CGI]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;============<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;i)request header+body&nbsp;&nbsp;&nbsp;&nbsp; ii)request header+body<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +~~~~&gt;~~~~&gt;~~~~&gt;~~~+&nbsp;&nbsp;&nbsp;&nbsp; 
+~~~~~&gt;~~~~~&gt;~~~~&gt;~~~~~+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/|\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\|/&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\|/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebVisitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FastCGIServer<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(user)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(nginx)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(php-cgi)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/|\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ /&nbsp;&nbsp; /|\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ /<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +~~~&lt;~~~~&lt;~~~~&lt;~~~~+&nbsp;&nbsp;&nbsp;&nbsp; 
+~~~~~&lt;~~~~~&lt;~~~~&lt;~~~~~+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iv)response header+body&nbsp;&nbsp;&nbsp;&nbsp;iii)response header+body</code></span></span></div><div><span id="result_box" class="" lang="en"><span style="" title=""><code><br></code></span></span></div><div><span id="result_box" class="" lang="en"><span style="" title=""><code>&nbsp;&nbsp; &nbsp; &nbsp;[PHP-DWS]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;============</code></span></span></div><div><br></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-style-span" style="font-family: monospace; ">i)request header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii)request header</span></div><code>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +~~~~&gt;~~~~&gt;~~~~&gt;~~~+&nbsp;&nbsp;&nbsp;&nbsp; 
+~~~~~&gt;~~~~~&gt;~~~~&gt;~~~~~+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/|\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\|/&nbsp;&nbsp; / \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\|/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebVisitor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWSCGI Server<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(user)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(nginx)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (php-dws)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /|\&nbsp;&nbsp;\ /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /|\&nbsp;&nbsp; \ /<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+~~~~~~~~&gt;~~~~~~~~~~~~&gt;~~~~~~~~~~~~&gt;~~~~~~~~+&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; iii) request body&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+~~~~~~~~~~~~~&lt;~~~~~~~~~~~&lt;~~~~~~~~~~~~~&lt;~~~~~~~~~~~~~~+&nbsp;&nbsp;
 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iv)response header+body</code><div><font class="Apple-style-span" face="monospace"><br></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; ">I think that php-dws will save much more IO operator and become more e</span></font>fficient.</div><div><span id="result_box" class="short_text" lang="en"><span style="" title="">In addition, we can send partial data to browser during script running, i.e:</span></span></div><div><span id="result_box" class="short_text" lang="en"><span title=""><a href="http://root.twomice.net/dws-test/sleep.phpd">http://root.twomice.net/dws-test/sleep.phpd</a></span></span></div><div><br></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; ">Welcome to give me some suggestions or comments!&nbsp;</span></font></div><div><br></div><div>===</div><div><br></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "></span></font>I have 
completed&nbsp;the preliminary work, including two part.&nbsp;</div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title="">The first is ngx_http_dwsgi_module, &nbsp;download source codes from:</span></span></span></font></div><div><a href="http://www.hightman.cn/down/nginx_0.8_dwsgi_module_beta1.tgz">http://www.hightman.cn/down/nginx_0.8_dwsgi_module_beta1.tgz</a></div><div><br></div><div>Extract it to top source directory of nginx, it will be looked like:</div><div>nginx-0.8.x/src/addon/dwsgi/</div><div><br></div><div>then recompile the nginx with option: --add-module=src/addon/dwsgi</div><div><br></div><div>config sample can be found in src/addon/dwsgi/*.conf</div><div><br></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title="">The second is a new sapi module for php, develop under 5.3.3, get the source</span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title="">code package from:&nbsp;</span></span></span></font></div><div><span id="result_box" class="" lang="en"><span title=""><a href="http://www.hightman.cn/down/php53_sapi_dws_beta1.tgz">http://www.hightman.cn/down/php53_sapi_dws_beta1.tgz</a></span></span></div><div><span id="result_box" class="" lang="en"><span title=""><br></span></span></div><div><span id="result_box" class="" lang="en"><span title="">Extract it to top source directory of php5, it will be looked like:</span></span></div><div><span id="result_box" class="" lang="en"><span title="">php-5.3.x/sapi/dws/</span></span></div><div><span id="result_box" class="" lang="en"><span title=""><br></span></span></div><div><span id="result_box" class="" lang="en"><span title="">then run following commands to rebuild the php:</span></span></div><div><span id="result_box" class="" lang="en"><span title="">./buildconf --force</span></span></div><div><span id="result_box" class="" lang="en"><span title="">./config.nice --disable-fpm --disable-cgi --enable-dws</span></span></div><div><span id="result_box" class="" lang="en"><span title="">make &amp;&amp; make install</span></span></div><div><span id="result_box" class="" lang="en"><span title=""><br></span></span></div><div><span id="result_box" class="" lang="en"><span title="">Run $prefix/bin/php-dwsctl to start or stop php-dws,&nbsp;</span></span></div><div><span id="result_box" class="" lang="en"><span title="">or try $prefix/bin/php-dws -h &nbsp;for more options and its description.</span></span></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="font-family: 'Heiti SC'; "><span id="result_box" class="" lang="en"><span style="" title=""><br></span></span></span></font></div><div><code></code><font class="Apple-style-span" face="monospace">&nbsp;&nbsp;<br></font><div><br></div></div></body></html>