<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". It works much like fastcgi server with nginx, </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> via </div><div>calling sendmsg(), and then PHP-dws read request body data from http connection , send response </div><div>data to 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> [PHP-CGI]<br>
============<br>
<br> i)request header+body ii)request header+body<br>
+~~~~>~~~~>~~~~>~~~+
+~~~~~>~~~~~>~~~~>~~~~~+<br>
| | | |<br>
/|\ \|/ / \ \|/<br>
WebVisitor Web Server FastCGIServer<br>
(user) (nginx) (php-cgi)<br>
/|\ \ / /|\ \ /<br>
| | | |<br>
+~~~<~~~~<~~~~<~~~~+
+~~~~~<~~~~~<~~~~<~~~~~+<br>
iv)response header+body 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> [PHP-DWS]<br> ============</code></span></span></div><div><br></div><div> <span class="Apple-style-span" style="font-family: monospace; ">i)request header ii)request header</span></div><code>
+~~~~>~~~~>~~~~>~~~+
+~~~~~>~~~~~>~~~~>~~~~~+<br>
| | | |<br>
/|\ \|/ / \ \|/<br>
WebVisitor Web Server DWSCGI Server<br>
(user) (nginx) (php-dws)<br>
/|\ \ / /|\ \ /<br>
| | | |<br>
| +~~~~~~~~>~~~~~~~~~~~~>~~~~~~~~~~~~>~~~~~~~~+ |<br>
| iii) request body |<br>
| |<br>
+~~~~~~~~~~~~~<~~~~~~~~~~~<~~~~~~~~~~~~~<~~~~~~~~~~~~~~+
<br>
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! </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 the preliminary work, including two part. </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, 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: </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 && 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, </span></span></div><div><span id="result_box" class="" lang="en"><span title="">or try $prefix/bin/php-dws -h 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"> <br></font><div><br></div></div></body></html>