rasmus          Wed Dec 22 10:03:21 2004 EDT

  Modified files:              
    /phpdoc/en  language-snippets.ent 
    /phpdoc/en/faq      installation.xml 
  Log:
  Restrict the Apache2 warning to just talk about threading issues.
  
  
http://cvs.php.net/diff.php/phpdoc/en/language-snippets.ent?r1=1.125&r2=1.126&ty=u
Index: phpdoc/en/language-snippets.ent
diff -u phpdoc/en/language-snippets.ent:1.125 
phpdoc/en/language-snippets.ent:1.126
--- phpdoc/en/language-snippets.ent:1.125       Mon Dec 13 10:06:21 2004
+++ phpdoc/en/language-snippets.ent     Wed Dec 22 10:03:20 2004
@@ -1,4 +1,4 @@
-<!-- $Revision: 1.125 $ -->
+<!-- $Revision: 1.126 $ -->
 <!-- Keep 'em sorted -->
 
 
@@ -413,9 +413,9 @@
 utf16le, utf16be, big5 and shiftjis.</para>'>
 
 <!-- Snippets for the installation section -->
-<!ENTITY warn.apache2.compat '<warning><para>Do not use Apache 2.0.x
-and PHP in a production environment neither on Unix nor on Windows.  For
-information on why, read the following 
+<!ENTITY warn.apache2.compat '<warning><para>We do not recommend using a 
threaded MPM
+in production with Apache2.  Use the prefork MPM instead, or use Apache1.  For 
information
+on why, read the following 
 <link linkend="faq.installation.apache2">FAQ entry</link></para></warning>'>
 
 <!ENTITY note.apache.slashes '<note><simpara>Remember that when adding
http://cvs.php.net/diff.php/phpdoc/en/faq/installation.xml?r1=1.40&r2=1.41&ty=u
Index: phpdoc/en/faq/installation.xml
diff -u phpdoc/en/faq/installation.xml:1.40 phpdoc/en/faq/installation.xml:1.41
--- phpdoc/en/faq/installation.xml:1.40 Sun Sep 19 06:08:19 2004
+++ phpdoc/en/faq/installation.xml      Wed Dec 22 10:03:21 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.40 $ -->
+<!-- $Revision: 1.41 $ -->
  <chapter id="faq.installation">
   <title>Installation</title>
   <titleabbrev>Installation</titleabbrev>
@@ -22,60 +22,11 @@
    <qandaentry id="faq.installation.apache2">
     <question>
      <para>
-      Why shouldn't I use Apache 2 in a production environment?
+      Why shouldn't I use Apache2 with a threaded MPM 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>
-     <blockquote>
-      <para>
-       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!!!
-      </para>
-     </blockquote>
-
-     <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
@@ -83,18 +34,18 @@
       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
+      quickly. When you make 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.
+      segments and a strong sandbox for each request to play in, feet of
+      clay are introduced into PHP's system.
+     </para>
+     <para>
+      If you feel you have to use a threaded MPM, look at a FastCGI 
configuration
+      where PHP is running in its own memory space.  
      </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 Apache 1 for serving up PHP pages
-      with the one caveat that Apache 1 sucks pretty badly on Windows.
+      And finally, this warning against using a threaded MPM is not as strong 
for
+      Windows systems because most libraries on that platform tend to be 
threadsafe.
      </para>
     </answer>
    </qandaentry>

Reply via email to