Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:16304 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 77984 invoked by uid 1010); 27 May 2005 17:06:16 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 52947 invoked from network); 27 May 2005 16:46:46 -0000 Received: from unknown (HELO pb1.pair.com) (127.0.0.1) by localhost with SMTP; 27 May 2005 16:46:46 -0000 Received: from ([127.0.0.1:20832]) by pb1.pair.com (ecelerity 1.2 r(5656M)) with ECSTREAM id 1E/E5-03732-5AE47924 for ; Fri, 27 May 2005 12:45:25 -0400 X-Host-Fingerprint: 69.56.199.218 unknown Linux 2.4 in cluster Received: from ([69.56.199.218:45993] helo=litespeedtech.com) by pb1.pair.com (ecelerity 1.2 r(5656M)) with SMTP id 52/00-28826-B9147924 for ; Fri, 27 May 2005 11:49:49 -0400 Received: from ool-44c0bdc2.dyn.optonline.net ([68.192.189.194] helo=[192.168.0.100]) by litespeedtech.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.44) id 1Dbh4q-0008Qw-Ho for internals@lists.php.net; Fri, 27 May 2005 10:48:50 -0500 Message-ID: <42974168.9040601@litespeedtech.com> Date: Fri, 27 May 2005 11:48:56 -0400 User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 To: internals@lists.php.net Content-Type: multipart/mixed; boundary="------------020703090904020809000007" X-SA-Exim-Connect-IP: 68.192.189.194 X-SA-Exim-Mail-From: gwang@litespeedtech.com X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on litespeed01 X-Spam-Level: * X-Spam-Status: No, score=1.8 required=8.0 tests=RCVD_IN_NJABL_DUL, RCVD_IN_SORBS_DUL autolearn=no version=3.0.2 X-SA-Exim-Version: 4.2 (built Sat, 22 Jan 2005 14:43:15 -0600) X-SA-Exim-Scanned: Yes (on litespeedtech.com) Subject: PHP LiteSpeed SAPI patch From: gwang@litespeedtech.com (George Wang) --------------020703090904020809000007 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, Attached is the code for PHP LiteSpeed SAPI. To apply the patch, just expand it under php/sapi/ directory, run buildconf, then configure PHP with option "--with-litespeed". The patch can be applied to both PHP 4 & 5. LiteSpeed SAPI is similar to CGI/FastCGI sapi, two major enhancements over FastCGI sapi, one is support of changing PHP configuration via web server configuration and .htacess file; another one is improved performance over FastCGI PHP and Apache mod_php, our simple "hello, world" performance test shows that LiteSpeed SAPI has up to 30% performance advantage over FastCGI PHP, and doubles the performance that Apache mod_php can provide. PHP with LiteSpeed SAPI works together with litespeed web server 2.1RC1 release. For more information about this SAPI module, please visit http://www.litespeedtech.com/lsapi/ and http://www.litespeedtech.com/docs/HowTo_QA.html#qa_php We are new to PHP SAPI programming and we use cgi/cli/apache/thttpd SAPI code as references, please help reviewing our code. Any comment or suggestion is highly welcome. :-) Thanks, George Wang --------------020703090904020809000007 Content-Type: application/x-compressed; name="litespeed-1.1.tgz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="litespeed-1.1.tgz" H4sIAGgllUIAA+w8/XfauLL7M3+Fmu3JQgIJ5KsfaXquQ5zErwRYcNrt3dvj44BJfAo2F0Pa vLbvb38zkixLsgxkt6/vnfPq3TRYGo1mRqP5ksg4nAfJNAiGu4M4GoW3O5ODX773U2/U60cH B7/U4Xl2xH43+Ds8e8+ePfulUd87ONxrPDtsNAB+/6h++Aupf3dKDM8imfszQn65/eRHt0vh glnyIwj6sc8wGpfghzx1hi+JUIHqPWnsNMhevX64W9/fbRyRvcbLvfrLg0NC5UTsz1PyFAeW SlbTu+pfeM1Lu/nGaV+UR/GMtECr+qhVJFlMp/FsXqFwVu/Ce+e4l+VxqnXV0p+E1Gqfwvld TTQS/pwuwvGQdC+7xE9I1juJh4tx8AGGlgj2en2r63gtx7X7Xds+O3mK2O79celDtQAiiksf gKJwRADnnGw8zcNskCcnZCOKN47J/C6IOB7r7My7st7Y507L9s571sWV3XbLT/2bxEtmg2E4 2038abgraN298j8Go3Ac7Ixm/m21GLCqvlZgPpUer2u5lyca9undNGXw+rTvlg1DKimA3bKb LmVSkj6ZzuLbmT+pkjGi9iZ+GO0M2Ms4vNkZVMnGRpX89tSI+rcKAewDPwnI07s4mXv+OISV ClFaW0N/9imMtnB+WMlrp3UmLcDGv56Wm80KwV/nLeui7zVbttWmDfYfbs/yWLPU0DpjgN1e 56JnXdEe3kY/ty3XeWt7PaSMtSDbF63OqdXyOqf/0X+5M45PdmLRRTkydcC6XtnvOr03yvTO KXv9p90+8+S2WozNJvlsUN6Pj1Ecg4fbTBzrLe1O8DkolB7M7XY6LZi+BvshOBmH0UfCpVoL PuOeqw0fIn8SDr6nlFE+xSLOy/Y7SrBYk/7fySJI/EFJ2fmaWCqlUSgsc8/uX7fASuWNXKX0 S6ZxdNMPg9HO3ff2Mcv9f6NxsN+g/h/c/97h0SHAH0BQ8NP//4hnd6vUjKcPs/D2bk7Kgwr1 +VXqwAnz4G4wuIvicXwbBglxosFOyRqPCR2QkFkAYrkPhjulUi8Yhsl8Ft4s5mEcET8aEpAZ eAOSxIvZIKAtN2Hkzx4IxAiTpErQURMIF/B3vJiXYPeGo3DgI4Iq8WcBmQazSTifAxngqe5B PYfgjv05+mRAMh7HYFRvMW4ZhjgowUGlSTB/SUp0u2wRlayExKOUngHYCjKB9Qcu5uD4KFL/ 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 --------------020703090904020809000007--