Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 316

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="Function: http_flush - Virtuoso Functions Guide" />
  <meta name="dc.subject" content="Function: http_flush - Virtuoso Functions Guide" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="functions.html" title="Chapter Contents" />
  <link rel="prev" href="appendixa.html" title="Appendix" />
  <link rel="next" href="functions.html#.html" title="" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>Function: http_flush - Virtuoso Functions Guide</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="fn_http_flush" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>22. Virtuoso Functions Guide - http_flush</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_http_file.html" title="http_file">Prev</a> | <a class="link" href="fn_http_get.html" title="http_get">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div>
      <a class="selected" href="functions.html">Virtuoso Functions Guide</a>
   </div>
    <br />
   <div>
      <a href="functions.html#admin">Administration</a>
   </div>
   <div>
      <a href="functions.html#aggr">Aggregate Functions</a>
   </div>
   <div>
      <a href="functions.html#array">Array Manipulation</a>
   </div>
   <div>
      <a href="functions.html#bpel">BPEL APIs</a>
   </div>
   <div>
      <a href="functions.html#backup">Backup</a>
   </div>
   <div>
      <a href="functions.html#compression">Compression</a>
   </div>
   <div>
      <a href="functions.html#cursors">Cursor</a>
   </div>
   <div>
      <a href="functions.html#time">Date &amp; Time Manipulation</a>
   </div>
   <div>
      <a href="functions.html#debug">Debug</a>
   </div>
   <div>
      <a href="functions.html#dict">Dictionary Manipulation</a>
   </div>
   <div>
      <a href="functions.html#encoding">Encoding &amp; Decoding</a>
   </div>
   <div>
      <a href="functions.html#file">File Manipulation</a>
   </div>
   <div>
      <a href="functions.html#ft">Free Text</a>
   </div>
   <div>
      <a href="functions.html#hash">Hashing / Cryptographic</a>
   </div>
   <div>
      <a href="functions.html#ldap">LDAP</a>
   </div>
   <div>
      <a href="functions.html#localization">Locale</a>
   </div>
   <div>
      <a href="functions.html#mail">Mail</a>
   </div>
   <div>
      <a href="functions.html#misc">Miscellaneous</a>
   </div>
   <div>
      <a href="functions.html#number">Number</a>
   </div>
   <div>
      <a href="functions.html#phrz">Phrases</a>
   </div>
   <div>
      <a href="functions.html#rdf">RDF data</a>
   </div>
   <div>
      <a href="functions.html#rmt">Remote SQL Data Source</a>
   </div>
   <div>
      <a href="functions.html#repl">Replication</a>
   </div>
   <div>
      <a href="functions.html#soap">SOAP</a>
   </div>
   <div>
      <a href="functions.html#sql">SQL</a>
   </div>
   <div>
      <a href="functions.html#string">String</a>
   </div>
   <div>
      <a href="functions.html#txn">Transaction</a>
   </div>
   <div>
      <a href="functions.html#type">Type Mapping</a>
   </div>
   <div>
      <a href="functions.html#uddi">UDDI</a>
   </div>
   <div>
      <a href="functions.html#udt">User Defined Types &amp; The CLR</a>
   </div>
   <div>
      <a href="functions.html#vad">VAD</a>
   </div>
   <div>
      <a href="functions.html#jvmpl">Virtuoso Java PL API</a>
   </div>
   <div>
      <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a>
   </div>
   <div>
      <a class="selected" href="functions.html#ws">Web &amp; Internet</a>
   </div>
   <div class="selected">
    <div>
        <a href="fn_dav_api_add.html">dav add &amp; update fun...</a>
    </div>
    <div>
        <a href="fn_dav_api_lock.html">dav lock manipulatio...</a>
    </div>
    <div>
        <a href="fn_dav_api_change.html">dav manipulation fun...</a>
    </div>
    <div>
        <a href="fn_dav_api_search.html">dav search functions</a>
    </div>
    <div>
        <a href="fn_dav_exp.html">dav_exp</a>
    </div>
    <div>
        <a href="fn_lfs_exp.html">lfs_exp</a>
    </div>
    <div>
        <a href="fn_serv_queue_top.html">serv_queue_top</a>
    </div>
    <div>
        <a href="fn_urlrewrite_create_regex_rule.html">urlrewrite_create_re...</a>
    </div>
    <div>
        <a href="fn_USER_KEY_LOAD.html">user_key_load</a>
    </div>
    <div>
        <a href="fn_vhost_define.html">vhost_define</a>
    </div>
    <div>
        <a href="fn_vhost_remove.html">vhost_remove</a>
    </div>
    <div>
        <a href="fn_dav_api_user.html">webdav users &amp; group...</a>
    </div>
    <div>
        <a href="fn_client_attr.html">client_attr</a>
    </div>
    <div>
        <a href="fn_connection_get.html">connection_get</a>
    </div>
    <div>
        <a href="fn_connection_id.html">connection_id</a>
    </div>
    <div>
        <a href="fn_connection_is_dirty.html">connection_is_dirty</a>
    </div>
    <div>
        <a href="fn_connection_set.html">connection_set</a>
    </div>
    <div>
        <a href="fn_connection_vars.html">connection_vars</a>
    </div>
    <div>
        <a href="fn_connection_vars_set.html">connection_vars_set</a>
    </div>
    <div>
        <a href="fn_dbname.html">dbname</a>
    </div>
    <div>
        <a href="fn_ftp_get.html">ftp_get</a>
    </div>
    <div>
        <a href="fn_ftp_ls.html">ftp_ls</a>
    </div>
    <div>
        <a href="fn_ftp_put.html">ftp_put</a>
    </div>
    <div>
        <a href="fn_get_certificate_info.html">get_certificate_info</a>
    </div>
    <div>
        <a href="fn_get_keyword.html">get_keyword</a>
    </div>
    <div>
        <a href="fn_get_keyword_ucase.html">get_keyword_ucase</a>
    </div>
    <div>
        <a href="fn_http.html">http</a>
    </div>
    <div>
        <a href="fn_http_acl_get.html">http_acl_get</a>
    </div>
    <div>
        <a href="fn_http_acl_remove.html">http_acl_remove</a>
    </div>
    <div>
        <a href="fn_http_acl_set.html">http_acl_set</a>
    </div>
    <div>
        <a href="fn_http_body_read.html">http_body_read</a>
    </div>
    <div>
        <a href="fn_http_client.html">http_client</a>
    </div>
    <div>
        <a href="fn_http_client_ext.html">http_client_ext</a>
    </div>
    <div>
        <a href="fn_http_client_ip.html">http_client_ip</a>
    </div>
    <div>
        <a href="fn_http_debug_log.html">http_debug_log</a>
    </div>
    <div>
        <a href="fn_http_enable_gz.html">http_enable_gz</a>
    </div>
    <div>
        <a href="fn_http_file.html">http_file</a>
    </div>
    <div>
        <a class="selected" href="fn_http_flush.html">http_flush</a>
    </div>
    <div>
        <a href="fn_http_get.html">http_get</a>
    </div>
    <div>
        <a href="fn_http_header.html">http_header</a>
    </div>
    <div>
        <a href="fn_http_header_get.html">http_header_get</a>
    </div>
    <div>
        <a href="fn_http_kill.html">http_kill</a>
    </div>
    <div>
        <a href="fn_http_listen_host.html">http_listen_host</a>
    </div>
    <div>
        <a href="fn_http_lock.html">http_lock</a>
    </div>
    <div>
        <a href="fn_http_map_get.html">http_map_get</a>
    </div>
    <div>
        <a href="fn_http_map_table.html">http_map_table</a>
    </div>
    <div>
        <a href="fn_http_param.html">http_param</a>
    </div>
    <div>
        <a href="fn_http_path.html">http_path</a>
    </div>
    <div>
        <a href="fn_http_pending_req.html">http_pending_req</a>
    </div>
    <div>
        <a href="fn_http_physical_path.html">http_physical_path</a>
    </div>
    <div>
        <a href="fn_http_proxy.html">http_proxy</a>
    </div>
    <div>
        <a href="fn_http_request_get.html">http_request_get</a>
    </div>
    <div>
        <a href="fn_http_request_header.html">http_request_header</a>
    </div>
    <div>
        <a href="fn_http_request_status.html">http_request_status</a>
    </div>
    <div>
        <a href="fn_http_rewrite.html">http_rewrite</a>
    </div>
    <div>
        <a href="fn_http_root.html">http_root</a>
    </div>
    <div>
        <a href="fn_http_unlock.html">http_unlock</a>
    </div>
    <div>
        <a href="fn_http_url.html">http_url</a>
    </div>
    <div>
        <a href="fn_http_value.html">http_value</a>
    </div>
    <div>
        <a href="fn_http_xslt.html">http_xslt</a>
    </div>
    <div>
        <a href="fn_json_parse.html">json_parse</a>
    </div>
    <div>
        <a href="fn_ses_connect.html">ses_connect</a>
    </div>
    <div>
        <a href="fn_ses_disconnect.html">ses_disconnect</a>
    </div>
    <div>
        <a href="fn_ses_read_line.html">ses_read_line</a>
    </div>
    <div>
        <a href="fn_ses_write.html">ses_write</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyaddr.html">tcpip_gethostbyaddr</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyname.html">tcpip_gethostbyname</a>
    </div>
    <div>
        <a href="fn_vsp_calculate_digest.html">vsp_calculate_digest</a>
    </div>
    <div>
        <a href="fn_wsdl_import_udt.html">wsdl_import_udt</a>
    </div>
   </div>
   <div>
      <a href="functions.html#xml">XML</a>
   </div>
   <div>
      <a href="functions.html#XPATH">XPATH &amp; XQUERY</a>
   </div>
    <br />
   <div>
      <a href="functionidx.html">Functions Index</a>
   </div>
    <br />
  </div>
  <div id="text">
    <h2>http_flush</h2>
    <div class="refpurpose">Flush internal HTTP stream and disconnect client; Flush HTTP stream and try sending data in chunked mode.</div>
    <div class="funcsynopsis">
        <span class="funcdef">
     <span class="function">http_flush</span>
     </span>
        (<span class="paramdefoptional">[in <span class="optional">try_what</span> integer]</span>);
      </div>
  
  
  
  <div class="refsect1">
      <div class="refsect1title">Description</div>
    <p>
This flushes the internal buffer where output of a VSP page is stored pending the execution of the page&#39;s code.
This sends the content of the page output buffer along with headers and disconnects
the client.  The status is 200 OK by default, unless overridden by http_status.
The purpose of this function is to allow a page to send output before terminating
, thus the page can continue processing for an indefinite time without
requiring the client to wait.  This is useful for starting long running background tasks
from HTTP clients.
</p>
    <p>
VSP pages that use this function must be sure to supply appropriate content
(or response headers) if needed before calling this function.
</p>
<p>Virtuoso supports HTTP 1.1 Chunking Encoding which allows Virtuoso to
send the user agent chunks of output as the page is still processing.  Chunking
is enabled by calling <span class="computeroutput">http_flush(1)</span> within the VSP page.
By default chunks are sent for every 4k worth of output generated, but in some
cases the output needs to consist of  smaller chunks, for example when run-time status needs to be shown in a status page.
So to achieve this the http_flush (try_what=1) could be invoked
in places where chunk must be flushed to the User agent. </p>
<p>Chunked mode requires the following conditions:</p>

<ul>
        <li>no &quot;Content-Length&quot; header sent to the client using http_header()</li>
        <li>no &quot;Content-Encoding&quot; header sent to the client using http_header()</li>
        <li>use http_xslt() is not permitted</li>
        <li>The client supports HTTP 1.1</li>
      </ul>

<p>Failing these conditions, <span class="computeroutput">http_flush(1)</span> will be a
    No-Operation.</p>
<p>If the function has actually switched to chunked mode it will return a non-zero integer. Otherwise
    and integer 0 will be returned.</p>
	

<p>Chunked mode is not supported for static content.</p>
  </div>
  <div class="refsect1">
      <div class="refsect1title">Parameters</div>
    <div class="refsect2">
        <span class="refsect2title">try_what – </span>
      This optional parameter can be supplied the value one (1) to instruct
	  Virtuoso to try sending the output of the VSP page in chunked mode.
    </div>
  </div>
  <div class="refsect1">
      <div class="refsect1title">Examples</div>
    <a name="ex_http_flush" />
      <div class="example">
        <div class="exampletitle">Using http_flush()</div>
    <div>
          <pre class="programlisting">
  &lt;?vsp
    http (&#39;&lt;p&gt;Hit &lt;a href=&quot;status.vsp&quot;&gt;there&lt;/a&gt; to go on status page&lt;/p&gt;&#39;);
    http_flush ();
    long_task_procedure ();
  ?&gt;
    </pre>
        </div>
    </div>
    <a name="ex_http_flush" />
      <div class="example">
        <div class="exampletitle">Using http_flush() small chunks</div>
    <p>The following example will render in browser at every loop iteration
&#39;state=N&#39;; so this will be visible at &#39;run-time&#39; not when loop finished which
may take a long.</p>
    <div>
          <pre class="programlisting">
&lt;?vsp
  ....
  http_flush (1);

  while (i&lt;1000)
    {
      process_some_item (); -- some procedure that takes a long time usually
      http (&#39;state=&#39;||cast (i as varchar)||&#39;&lt;br&gt;&#39;);
      http_flush (1);
      i := i + 1;
    }
?&gt;
    </pre>
        </div>
    </div>
  </div>
  <div class="refsect1">
      <div class="refsect1title">See Also</div>
    <p>
      <a href="fn_http.html">http</a>,
      <a href="fn_http_value.html">http_value</a>,
      <a href="fn_http_url.html">http_url</a>,
      <a href="fn_string_output.html">string_output</a>,
      <a href="fn_http_rewrite.html">http_rewrite</a>.
    </p>
  </div>
</div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>