nlopess Wed Jun 16 08:22:33 2004 EDT
Modified files:
/phpdoc/en language-snippets.ent
/phpdoc/en/faq installation.xml
/phpdoc/en/install/unix apache2.xml
Log:
move that apache compat stuff to a gaq entry, so that windows users will also read it
http://cvs.php.net/diff.php/phpdoc/en/language-snippets.ent?r1=1.97&r2=1.98&ty=u
Index: phpdoc/en/language-snippets.ent
diff -u phpdoc/en/language-snippets.ent:1.97 phpdoc/en/language-snippets.ent:1.98
--- phpdoc/en/language-snippets.ent:1.97 Wed Jun 16 07:11:19 2004
+++ phpdoc/en/language-snippets.ent Wed Jun 16 08:22:33 2004
@@ -1,4 +1,4 @@
-<!-- $Revision: 1.97 $ -->
+<!-- $Revision: 1.98 $ -->
<!-- Keep 'em sorted -->
@@ -354,8 +354,8 @@
<!-- Snippets for the installation section -->
<!ENTITY warn.apache2.compat '<warning><para>Do not use Apache 2.0.x
-and <literal>PHP</literal> in a production environment neither
-on Unix nor on Windows.</para></warning>'>
+and PHP in a production environment neither on Unix nor on Windows. Read also the
+<link linkend="faq.installation.apache2">FAQ entry</link></para></warning>'>
<!ENTITY note.apache.slashes '<note><simpara>Remember that when adding
path values in the Apache configuration files on Windows, all backslashes
http://cvs.php.net/diff.php/phpdoc/en/faq/installation.xml?r1=1.28&r2=1.29&ty=u
Index: phpdoc/en/faq/installation.xml
diff -u phpdoc/en/faq/installation.xml:1.28 phpdoc/en/faq/installation.xml:1.29
--- phpdoc/en/faq/installation.xml:1.28 Tue Jun 1 15:50:44 2004
+++ phpdoc/en/faq/installation.xml Wed Jun 16 08:22:33 2004
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.28 $ -->
+<!-- $Revision: 1.29 $ -->
<chapter id="faq.installation">
<title>Installation</title>
<titleabbrev>Installation</titleabbrev>
@@ -19,6 +19,86 @@
</para>
<qandaset>
+ <qandaentry id="faq.installation.apache2">
+ <question>
+ <para>
+ Why shouldn't I use Apache 2 in a production environment?
+ </para>
+ </question>
+ <answer>
+ <para>
+ The following answer is based in this modified excerpt of a mail
+ by Rasmus Lerdorf.
+ </para>
+ <para>
+ Apache 2 is a complete rewrite and a complete architecture change from
+ Apache 1. It is not like going from PHP 3 to PHP 4 or from PHP 4 to PHP 5.
+ There is a lot of code that is common, and certainly the base architecture
+ of PHP has not changed for years. So comparing Apache 1 vs. Apache 2 to
+ PHP 4 vs. PHP 5 makes no sense. The architecture has been proven over
+ the years and the code, while somewhat unwieldy in places, is a known
+ entity. PHP from the very early days was designed against this basic
+ Apache 1 architecture and works extremely well running under it.
+ </para>
+ <para>
+ The major feature that draws people to Apache 2 is threading. On Windows
+ where most basic libraries are, and must be, threadsafe, Apache 2 does
+ actually make sense and it would be good to work out the kinks on that
+ platform. However, on UNIX there are a lot of basic libraries where
+ thread safety is an unknown. And this is not about PHP extensions, it is
+ about 3rd-party libraries underneath PHP's hundreds of extensions.
+ Whether any one 3rd-party library is threadsafe is really hard to
+ determine. There are a lot of variables involved, including which OS,
+ which version of the OS, which libc, which version of that libc and on
+ some platforms even the compiler flags used to compile these things. And
+ to make it even more fun, tracking down a thread safety problem is damn
+ well near impossible. Hundreds of people may well state that
+ Apache+PHP+ext/foo works perfectly for them, but maybe they are only
+ getting about a million hits a day. Then another user comes along who
+ gets 100 million hits a day and uses a fast dual-cpu machine and
+ everything blows up because now suddenly the window for some tiny race
+ condition has been made much larger due to the faster cpu speeds, the
+ second cpu and the higher frequency of requests. And the bug report we
+ get from this user will be something along the lines of:
+ </para>
+ <para>
+ <quote>
+ It don't work sometimes. Most of the times it works fine, but then
+ every now and then it just don't. The error is different each time
+ and I have no idea how to reproduce it, but fix it right away!!!
+ </quote>
+ </para>
+
+ <para>What can we do about these?</para>
+ <para>
+ There are a number of (fixable) technical reasons Rasmus does not think
+ Apache2+PHP is a good idea in a production environment, but setting
+ those aside it really boils down to one simple concept:
+ </para>
+ <para>
+ PHP is glue. It is the glue used to build cool web applications by
+ sticking dozens of 3rd-party libraries together and making it all appear
+ as one coherent entity through an intuitive and easy to learn language
+ interface. The flexibility and power of PHP relies on the stability and
+ robustness of the underlying platform. It needs a working OS, a working
+ web server and working 3rd-party libraries to glue together. When any of
+ these stop working PHP needs ways to identify the problems and fix them
+ quickly. By making the underlying framework more complex by not having
+ completely separate execution threads, completely separate memory
+ segments and a strong sandbox for each request to play in, a feet of
+ clay is introduced into PHP's system.
+ </para>
+ <para>
+ Using the prefork mpm with Apache 2 to avoid the threading is possible,
+ and yes using a standalone fastcgi mechanism to avoid the threading,
+ too, but then defining characteristic of the web server of choice are
+ avoided. At this point in its development, Rasmus still maintains that
+ one is better off simply sticking with Apache1 for serving up PHP pages
+ with the one caveat that Apache 1 sucks pretty badly on Windows.
+ </para>
+ </answer>
+ </qandaentry>
+
<qandaentry id="faq.installation.phpini">
<question>
<para>
http://cvs.php.net/diff.php/phpdoc/en/install/unix/apache2.xml?r1=1.2&r2=1.3&ty=u
Index: phpdoc/en/install/unix/apache2.xml
diff -u phpdoc/en/install/unix/apache2.xml:1.2 phpdoc/en/install/unix/apache2.xml:1.3
--- phpdoc/en/install/unix/apache2.xml:1.2 Wed Jun 16 07:11:20 2004
+++ phpdoc/en/install/unix/apache2.xml Wed Jun 16 08:22:33 2004
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
+<!-- $Revision: 1.3 $ -->
<sect1 id="install.unix.apache2">
<title>Apache 2.0 on Unix systems</title>
<para>
@@ -7,89 +7,7 @@
of PHP on Unix systems.
</para>
- <warning>
- <para>
- Do not use Apache 2.0.x and <literal>PHP</literal> in a production
- environment neither on Unix nor on Windows. The reasoning behing
- that is explained thoroughly in this modified excerpt of a mail
- by Rasmus Lerdorf.
- </para>
-
- <para>
- Apache2 is a complete rewrite and a complete architecture change from
- Apache1. It is not like going from <literal>PHP3</literal> to
- <literal>PHP4</literal> or from <literal>PHP4</literal> to PHP5.
- There is a lot of code that is common, and certainly the base architecture
- of PHP has not changed for years. So comparing Apache1 vs. Apache2 to
- <literal>PHP4</literal> vs. <literal>PHP5</literal> makes no sense.
- The architecture has been proven over the years and the code, while
- somewhat unwieldy in places, is a known entity. PHP from the very
- early days was designed against this basic Apache1 architecture and
- works extremely well running under it.
- </para>
-
- <para>
- The major feature that draws people to Apache2 is threading. On Windows
- where most basic libraries are, and must be, threadsafe, Apache2 does
- actually make sense and it would be good to work out the kinks on that
- platform. However, on UNIX there are a lot of basic libraries where
- thread safety is an unknown. And this is not about <literal>PHP</literal>
- extensions, it is about 3rd-party libraries underneath
<literal>PHP's</literal>
- hundreds of extensions. Whether any one 3rd-party library is threadsafe is
- really hard to determine. There are a lot of variables involved, including
which
- OS, which version of the OS, which libc, which version of that libc and on
- some platforms even the compiler flags used to compile these things. And
- to make it even more fun, tracking down a thread safety problem is damn
- well near impossible. Hundreds of people may well state that
- Apache+<literal>PHP</literal>+ext/foo works perfectly for them, but maybe
- they are only getting about a million hits a day. Then another user comes
- along who gets 100 million hits a day and uses a fast dual-cpu machine and
- everything blows up because now suddenly the window for some tiny race
- condition has been made much larger due to the faster cpu speeds, the
- second cpu and the higher frequency of requests. And the bug report we
- get from this user will be something along the lines of:
- </para>
-
- <para>
- <note>
- It don't work sometimes. Most of the times it works fine, but then
- every now and then it just don't. The error is different each time
- and I have no idea how to reproduce it, but fix it right away!!!
- </note>
- </para>
-
- <para>What can we do about these?</para>
-
- <para>
- There are a number of (fixable) technical reasons Rasmus does not think
- Apache2+<literal>PHP</literal> is a good idea in a production environment,
- but setting those aside it really boils down to one simple concept:
- </para>
-
- <para>
- <literal>PHP</literal> is glue. It is the glue used to build cool web
- applications by sticking dozens of 3rd-party libraries together and making
- it all appear as one coherent entity through an intuitive and easy to learn
- language interface. The flexibility and power of <literal>PHP</literal>
relies
- on the stability and robustness of the underlying platform. It needs a
working
- OS, a working web server and working 3rd-party libraries to glue together.
- When any of these stop working <literal>PHP</literal> needs ways to identify
- the problems and fix them quickly. By making the underlying framework more
- complex by not having completely separate execution threads, completely
- separate memory segments and a strong sandbox for each request to play
- in, a feet of clay is introduced into <literal>PHP's</literal> system.
- </para>
-
- <para>
- Using the prefork mpm with Apache2 to avoid the
- threading is possible, and yes using a standalone fastcgi mechanism to avoid
- the threading, too, but then defining characteristic of the web server of
- choice are avoided. At this point in its development, Rasmus still maintains
- that one is better off simply sticking with Apache1 for serving up
- <literal>PHP</literal> pages with the one caveat that Apache1 sucks pretty
badly
- on Windows.
- </para>
- </warning>
+ &warn.apache2.compat;
<para>
You are highly encouraged to take a look at the