<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Phar->stopBuffering</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="Phar archive stream and classes" HREF="ref.phar.html"><LINK REL="PREVIOUS" TITLE="Phar->startBuffering" HREF="function.phar-startbuffering.html"><LINK REL="NEXT" TITLE="Phar->uncompressAllFiles" HREF="function.phar-uncompressallfiles.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.phar-startbuffering.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.phar-uncompressallfiles.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.phar-stopbuffering" ></A >Phar->stopBuffering</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN179568" ></A ><P > (no version information, might be only in CVS)</P >Phar->stopBuffering -- Stop buffering write requests to the Phar archive, and save changes to disk</DIV ><DIV CLASS="refsect1" ><A NAME="AEN179571" ></A ><H2 >说明</H2 >void <B CLASS="methodname" >Phar->stopBuffering</B > ( void )<BR ></BR ><P > <B CLASS="function" >stopBuffering()</B > is used in conjunction with the <B CLASS="function" >startBuffering()</B > method. <B CLASS="function" >startBuffering()</B > can provide a significant performance boost when creating or modifying a Phar archive with a large number of files. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes. In this way, the archive will be up-to-date with the activity performed on it. </P ><P > However, this can be unnecessary when simply creating a new Phar archive, when it would make more sense to write the entire archive out at once. Similarly, it is often necessary to make a series of changes and to ensure that they all are possible before making any changes on disk, similar to the relational database concept of transactions. The <B CLASS="function" >startBuffering()</B >/<B CLASS="function" >stopBuffering()</B > pair of methods is provided for this purpose. </P ><P > Phar write buffering is per-archive, buffering active for the <TT CLASS="literal" >foo.phar</TT > Phar archive does not affect changes to the <TT CLASS="literal" >bar.phar</TT > Phar archive. </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN179587" ></A ><H2 >错误/异常</H2 ><P > <B CLASS="classname" >PharException</B > is thrown if any problems are encountered flushing changes to disk. </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN179591" ></A ><H2 >范例</H2 ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN179594" ></A ><P ><B >例 1. A <B CLASS="function" >Phar->stopBuffering()</B > example</B ></P ><P > </P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$p </font><font color="#007700">= new </font><font color="#0000BB">Phar</font><font color="#007700">(</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">__FILE__</font><font color="#007700">) . </font><font color="#DD0000">'/brandnewphar.phar'</font><font color="#007700">, </font><font color="#0000BB">0</font><font color="#007700">, </font><font color="#DD0000">'brandnewphar.phar'</font><font color="#007700">);<br /></font><font color="#0000BB">$p</font><font color="#007700">[</font><font color="#DD0000">'file1.txt'</font><font color="#007700">] = </font><font color="#DD0000">'hi'</font><font color="#007700">;<br /></font><font color="#0000BB">$p</font><font color="#007700">-></font><font color="#0000BB">startBuffering</font><font color="#007700">();<br /></font><font color="#0000BB">var_dump</font><font color="#007700">(</font><font color="#0000BB">$p</font><font color="#007700">-></font><font color="#0000BB">getStub</font><font color="#007700">());<br /></font><font color="#0000BB">$p</font><font color="#007700">-></font><font color="#0000BB">setStub</font><font color="#007700">(</font><font color="#DD0000">"<?php<br />function __autoload(\$class)<br />{<br /> include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';<br />}<br />Phar::mapPhar('brandnewphar.phar');<br />include 'phar://brandnewphar.phar/startup.php';<br />__HALT_COMPILER();"</font><font color="#007700">);<br /></font><font color="#0000BB">$p</font><font color="#007700">-></font><font color="#0000BB">stopBuffering</font><font color="#007700">();<br /></font><font color="#0000BB">var_dump</font><font color="#007700">(</font><font color="#0000BB">$p</font><font color="#007700">-></font><font color="#0000BB">getStub</font><font color="#007700">());<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P >上例将输出:</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="screen" >string(24) "<?php __HALT_COMPILER();" string(195) "<?php function __autoload($class) { include 'phar://' . str_replace('_', '/', $class); } Phar::mapPhar('brandnewphar.phar'); include 'phar://brandnewphar.phar/startup.php'; __HALT_COMPILER();"</PRE ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="refsect1" ><A NAME="AEN179601" ></A ><H2 >参见</H2 ><P > <P ></P ><TABLE BORDER="0" ><TBODY ><TR ><TD ><A HREF="function.phar-startbuffering.html" ><B CLASS="function" >Phar->startBuffering()</B ></A ></TD ></TR ><TR ><TD ><A HREF="function.phar-isbuffering.html" ><B CLASS="function" >Phar->isBuffering()</B ></A ></TD ></TR ></TBODY ></TABLE ><P ></P > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.phar-startbuffering.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.phar-uncompressallfiles.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Phar->startBuffering</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.phar.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Phar->uncompressAllFiles</TD ></TR ></TABLE ></DIV ></BODY ></HTML >