mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-15 16:38:54 +00:00
MFB: Upgrade to the new-reference-structure
- Split reference.xml into book.xml, setup.xml, and examples.xml - Moved from reference.xml to book.xml: - The intro text (partintro), and link to various pages - Moved from reference.xml to setup.xml: - The requirements, installation, configuration, and resources - Moved examples to the new examples.xml - Changed See Also in reference.xml from section to partintro - Changed the constants section to be an <appendix> - Changed the intro ID from <extname>.intro to intro.<extname> git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@248796 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
d3d85f0827
commit
75c88000bc
5 changed files with 220 additions and 127 deletions
76
reference/pcntl/book.xml
Normal file
76
reference/pcntl/book.xml
Normal file
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision: 1.2 $ -->
|
||||
<!-- Purpose: fileprocess.process -->
|
||||
<!-- Membership: bundled -->
|
||||
|
||||
<book xml:id="book.pcntl" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>PCNTL</title>
|
||||
|
||||
<!-- {{{ preface -->
|
||||
<preface xml:id="intro.pcntl">
|
||||
&reftitle.intro;
|
||||
<para>
|
||||
Process Control support in PHP implements the Unix style of
|
||||
process creation, program execution, signal handling and process
|
||||
termination. Process Control should not be enabled within a
|
||||
web server environment and unexpected results may happen if any
|
||||
Process Control functions are used within a web server environment.
|
||||
</para>
|
||||
<para>
|
||||
This documentation is intended to explain the general usage of
|
||||
each of the Process Control functions. For detailed information
|
||||
about Unix process control you are encouraged to consult your
|
||||
systems documentation including fork(2), waitpid(2) and signal(2)
|
||||
or a comprehensive reference such as Advanced Programming in the
|
||||
UNIX Environment by W. Richard Stevens (Addison-Wesley).
|
||||
</para>
|
||||
<para>
|
||||
PCNTL now uses ticks as the signal handle callback mechanism, which is
|
||||
much faster than the previous mechanism. This change follows the same
|
||||
semantics as using "user ticks". You use the <function>declare</function>
|
||||
statement to specify the locations in your program where callbacks are
|
||||
allowed to occur. This allows you to minimize the overhead of handling
|
||||
asynchronous events. In the past, compiling PHP with pcntl enabled would
|
||||
always incur this overhead, whether or not your script actually used
|
||||
pcntl.
|
||||
</para>
|
||||
<para>
|
||||
There is one adjustment that all pcntl scripts prior to PHP 4.3.0 must
|
||||
make for them to work which is to either to use
|
||||
<function>declare</function> on a section where you wish to allow
|
||||
callbacks or to just enable it across the entire script using
|
||||
the new global syntax of <function>declare</function>.
|
||||
</para>
|
||||
|
||||
¬e.no-windows.extension;
|
||||
</preface>
|
||||
<!-- }}} -->
|
||||
|
||||
&reference.pcntl.setup;
|
||||
&reference.pcntl.constants;
|
||||
&reference.pcntl.examples;
|
||||
&reference.pcntl.reference;
|
||||
|
||||
</book>
|
||||
|
||||
<!-- 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:"../../../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
|
||||
-->
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision: 1.4 $ -->
|
||||
<section xml:id="pcntl.constants" xmlns="http://docbook.org/ns/docbook">
|
||||
<!-- $Revision: 1.5 $ -->
|
||||
<appendix xml:id="pcntl.constants" xmlns="http://docbook.org/ns/docbook">
|
||||
&reftitle.constants;
|
||||
<para>
|
||||
The following list of signals are supported by the Process Control
|
||||
|
@ -449,7 +449,7 @@
|
|||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</section>
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
|
|
85
reference/pcntl/examples.xml
Normal file
85
reference/pcntl/examples.xml
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision: 1.2 $ -->
|
||||
<chapter xml:id="pcntl.examples" xmlns="http://docbook.org/ns/docbook">
|
||||
&reftitle.examples;
|
||||
<section xml:id="pcntl.example">
|
||||
<para>
|
||||
This example forks off a daemon process with a signal handler.
|
||||
</para>
|
||||
<example>
|
||||
<title>Process Control Example</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
declare(ticks=1);
|
||||
|
||||
$pid = pcntl_fork();
|
||||
if ($pid == -1) {
|
||||
die("could not fork");
|
||||
} else if ($pid) {
|
||||
exit(); // we are the parent
|
||||
} else {
|
||||
// we are the child
|
||||
}
|
||||
|
||||
// detatch from the controlling terminal
|
||||
if (posix_setsid() == -1) {
|
||||
die("could not detach from terminal");
|
||||
}
|
||||
|
||||
// setup signal handlers
|
||||
pcntl_signal(SIGTERM, "sig_handler");
|
||||
pcntl_signal(SIGHUP, "sig_handler");
|
||||
|
||||
// loop forever performing tasks
|
||||
while (1) {
|
||||
|
||||
// do something interesting here
|
||||
|
||||
}
|
||||
|
||||
function sig_handler($signo)
|
||||
{
|
||||
|
||||
switch ($signo) {
|
||||
case SIGTERM:
|
||||
// handle shutdown tasks
|
||||
exit;
|
||||
break;
|
||||
case SIGHUP:
|
||||
// handle restart tasks
|
||||
break;
|
||||
default:
|
||||
// handle all other signals
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!-- 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:"../../../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
|
||||
-->
|
||||
|
|
@ -1,138 +1,16 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision: 1.15 $ -->
|
||||
<!-- Purpose: fileprocess.process -->
|
||||
<!-- Membership: bundled -->
|
||||
<!-- $Revision: 1.16 $ -->
|
||||
|
||||
<reference xml:id="ref.pcntl" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Process Control Functions</title>
|
||||
<titleabbrev>PCNTL</titleabbrev>
|
||||
|
||||
<partintro>
|
||||
<section xml:id="pcntl.intro">
|
||||
&reftitle.intro;
|
||||
<para>
|
||||
Process Control support in PHP implements the Unix style of
|
||||
process creation, program execution, signal handling and process
|
||||
termination. Process Control should not be enabled within a
|
||||
web server environment and unexpected results may happen if any
|
||||
Process Control functions are used within a web server environment.
|
||||
</para>
|
||||
<para>
|
||||
This documentation is intended to explain the general usage of
|
||||
each of the Process Control functions. For detailed information
|
||||
about Unix process control you are encouraged to consult your
|
||||
systems documentation including fork(2), waitpid(2) and signal(2)
|
||||
or a comprehensive reference such as Advanced Programming in the
|
||||
UNIX Environment by W. Richard Stevens (Addison-Wesley).
|
||||
</para>
|
||||
<para>
|
||||
PCNTL now uses ticks as the signal handle callback mechanism, which is
|
||||
much faster than the previous mechanism. This change follows the same
|
||||
semantics as using "user ticks". You use the <function>declare</function>
|
||||
statement to specify the locations in your program where callbacks are
|
||||
allowed to occur. This allows you to minimize the overhead of handling
|
||||
asynchronous events. In the past, compiling PHP with pcntl enabled would
|
||||
always incur this overhead, whether or not your script actually used
|
||||
pcntl.
|
||||
</para>
|
||||
<para>
|
||||
There is one adjustment that all pcntl scripts prior to PHP 4.3.0 must
|
||||
make for them to work which is to either to use
|
||||
<function>declare</function> on a section where you wish to allow
|
||||
callbacks or to just enable it across the entire script using
|
||||
the new global syntax of <function>declare</function>.
|
||||
</para>
|
||||
|
||||
¬e.no-windows.extension;
|
||||
</section>
|
||||
|
||||
<section xml:id="pcntl.requirements">
|
||||
&reftitle.required;
|
||||
&no.requirement;
|
||||
</section>
|
||||
|
||||
&reference.pcntl.configure;
|
||||
|
||||
<section xml:id="pcntl.configuration">
|
||||
&reftitle.runtime;
|
||||
&no.config;
|
||||
</section>
|
||||
|
||||
<section xml:id="pcntl.resources">
|
||||
&reftitle.resources;
|
||||
&no.resource;
|
||||
</section>
|
||||
|
||||
&reference.pcntl.constants;
|
||||
|
||||
<section xml:id="pcntl.example">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
This example forks off a daemon process with a signal handler.
|
||||
</para>
|
||||
<example>
|
||||
<title>Process Control Example</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
declare(ticks=1);
|
||||
|
||||
$pid = pcntl_fork();
|
||||
if ($pid == -1) {
|
||||
die("could not fork");
|
||||
} else if ($pid) {
|
||||
exit(); // we are the parent
|
||||
} else {
|
||||
// we are the child
|
||||
}
|
||||
|
||||
// detatch from the controlling terminal
|
||||
if (posix_setsid() == -1) {
|
||||
die("could not detach from terminal");
|
||||
}
|
||||
|
||||
// setup signal handlers
|
||||
pcntl_signal(SIGTERM, "sig_handler");
|
||||
pcntl_signal(SIGHUP, "sig_handler");
|
||||
|
||||
// loop forever performing tasks
|
||||
while (1) {
|
||||
|
||||
// do something interesting here
|
||||
|
||||
}
|
||||
|
||||
function sig_handler($signo)
|
||||
{
|
||||
|
||||
switch ($signo) {
|
||||
case SIGTERM:
|
||||
// handle shutdown tasks
|
||||
exit;
|
||||
break;
|
||||
case SIGHUP:
|
||||
// handle restart tasks
|
||||
break;
|
||||
default:
|
||||
// handle all other signals
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
<section xml:id="pcntl.seealso">
|
||||
<partintro xml:id="pcntl.seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
A look at the section about
|
||||
<link linkend="ref.posix">POSIX functions</link>
|
||||
may be useful.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</partintro>
|
||||
|
||||
|
|
54
reference/pcntl/setup.xml
Normal file
54
reference/pcntl/setup.xml
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision: 1.2 $ -->
|
||||
|
||||
<chapter xml:id="pcntl.setup" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
&reftitle.setup;
|
||||
|
||||
<!-- {{{ Requirements -->
|
||||
<section xml:id="pcntl.requirements">
|
||||
&reftitle.required;
|
||||
&no.requirement;
|
||||
</section>
|
||||
<!-- }}} -->
|
||||
|
||||
<!-- {{{ Installation -->
|
||||
&reference.pcntl.configure;
|
||||
<!-- }}} -->
|
||||
|
||||
<!-- {{{ Configuration -->
|
||||
<section xml:id="pcntl.configuration">
|
||||
&reftitle.runtime;
|
||||
&no.config;
|
||||
</section>
|
||||
<!-- }}} -->
|
||||
|
||||
<!-- {{{ Resources -->
|
||||
<section xml:id="pcntl.resources">
|
||||
&reftitle.resources;
|
||||
&no.resource;
|
||||
</section>
|
||||
<!-- }}} -->
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- 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:"../../../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
|
||||
-->
|
||||
|
Loading…
Reference in a new issue