r5514: *** empty log message ***
[cl-modlisp.git] / doc / readme.lml
index 8a54a53bbb036fe8f7ae9947276d07bc4f1c2e32..5ebbb05426da79dfc17f608e85c77d97d08e69ad 100644 (file)
      ").")
     (:h2 "Features")
     (:ul
-     (:li "support of AllegroCL, CMUCL, SBCL with sb-thread, and Lispworks.")
+     (:li "support for AllegroCL, CMUCL, SBCL with sb-thread, and Lispworks.")
      (:li "listener and worker socket/process management so that shutting down the listener closes all related open sockets and terminates all related proceses.")
      (:li "support for running multiple command processors on multiple ports.")
      (:li "transparent support for precomputing the HTML or XML response to take advantage of HTTP/1.1's Keep-Alive feature. This is switchable with a single keyword argument to the macro "
         (:tt "with-ml-page")
         ".")
+     (:li "Optional timeout of worker processes")
+     (:li "Two process models for flexibility")
      (:li "Demonstration processor included"))
     (:h2 "Prerequisites")
     (:ul
     (:h2 "Quickstart")
     (:ul
      (:li "The easiest way to install is to use the Debian GNU/Linux operating system. Using the testing or unstable distributions, you can give the command:"
-     (:p
-      "apt-get install libapache-mod-lisp cl-modlisp cl-kmrcl")
-     (:p
+     (:div
+      (:tt "apt-get install libapache-mod-lisp cl-modlisp cl-kmrcl"))
+     (:div
       "If you are not using Debian, you will need to download and install
 mod_lisp, cl-modlisp, and cl-kmrcl manually."))
      (:li
       "Add something like the below to httpd.conf and then restart apache"
-      (:br)
-      "LispServer 127.0.0.1 20123 \"localhost\""
-      (:br)
-      "AddHandler lisp-handler .lsp")
+      (:div (:tt "LispServer 127.0.0.1 20123 \"localhost\""))
+      (:div (:tt "AddHandler lisp-handler .lsp")))
      (:li
       "Start your Lisp implementation and load cl-modlisp with"
-      (:br)
-      "(asdf:operate 'asdf:load-op 'modlisp)") 
+      (:div (:tt "(asdf:operate 'asdf:load-op 'modlisp)")))
      (:li
       "Start the server with"
-      (:br)
-      "(ml:modlisp-start :port 20123)")
+      (:div (:tt "(ml:modlisp-start :port 20123)")))
      (:li "Try some demostration pages"
-         (:br)
-         "links http://localhost/fixed.lsp"
-         (:br)
-         "links http://localhost/debug.lsp")
+         (:div (:tt "links http://localhost/fixed.lsp"))
+         (:div (:tt "links http://localhost/debug.lsp")))
      (:li "Shutdown the all cl-modlisp servers with"
-         (:br)
-         "(ml:modlisp-stop-all)"))
+         (:div (:tt "(ml:modlisp-stop-all)"))))
 
+    (:h2 "Process Models")
+    (:p "There are two process models")
+    (:ul
+     (:li (:div (:b "Each connection spawns a new thread"))
+         (:div "This is the default model. Each new connection to listener socket spawns a new connection. This allows for an arbitrary number of concurrent connections. This has advantages if the workers require a long execution time."))
+     (:li (:div (:b "Fixed pool of workers"))
+         (:div "This model is selected by passing the number of worker processes to "
+             (:tt "init/listener")
+             " with the keyword "
+             (:tt "number-fixed-workers")
+             ". This model has a lower overhead since new processes are not created and destroyed with each connection. It has advantages when the workers have a short execution time."))) 
+               
     (:h2 "Usage")
-    (:p "The demo.lisp file for some examples of using cl-modlisp.")
+    (:p "The demo.lisp file for examples of using cl-modlisp.")
     )))