File: stopBuffering.xml

package info (click to toggle)
php-doc 20100521-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 59,992 kB
  • ctags: 4,085
  • sloc: xml: 796,833; php: 21,338; cpp: 500; sh: 117; makefile: 58; awk: 28
file content (132 lines) | stat: -rw-r--r-- 3,805 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 297028 $ -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.stopbuffering">
 <refnamediv>
  <refname>Phar::stopBuffering</refname>
  <refpurpose>Stop buffering write requests to the Phar archive, and save changes to disk</refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>void</type><methodname>Phar::stopBuffering</methodname>
   <void/>
  </methodsynopsis>

  <para>
   <function>Phar::stopBuffering</function> is used in conjunction with the
   <function>Phar::startBuffering</function> method.  <function>Phar::startBuffering</function>
   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.
  </para>
  <para>
   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
   <function>Phar::startBuffering</function>/<function>Phar::stopBuffering</function> pair
   of methods is provided for this purpose.
  </para>
  <para>
   Phar write buffering is per-archive, buffering active for the
   <literal>foo.phar</literal> Phar archive does not affect changes
   to the <literal>bar.phar</literal> Phar archive.
  </para>

 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.void;
  </para>
 </refsect1>

 <refsect1 role="errors">
  &reftitle.errors;
  <para>
   <classname>PharException</classname> is thrown if any problems are encountered
   flushing changes to disk.
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>A <function>Phar::stopBuffering</function> example</title>
    <para>
    </para>
    <programlisting role="php">
<![CDATA[
<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file1.txt'] = 'hi';
$p->startBuffering();
var_dump($p->getStub());
$p->setStub("<?php
function __autoload(\$class)
{
    include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
var_dump($p->getStub());
?>
]]>
    </programlisting>
    &example.outputs;
    <screen>
<![CDATA[
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();"
]]>
    </screen>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>Phar::startBuffering</function></member>
    <member><function>Phar::isBuffering</function></member>
   </simplelist>
  </para>
 </refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->