PHP的多線程應用服務器:appserver
appserver.io 是一個采用PHP開發的多線程 PHP 應用服務器,實現真正多線程的 PHP 編程,高效安全而且快速,速度比基于 Nginx 的 Magento 標準安裝要快 50%。使用上非常像 Java 的 Servlet。
亮點:
-
使用 Doctrine 作為標準的持久層
-
Session Beans (stateful, stateless + singleton)
-
Message Beans
-
Timer Service (tbd)
-
Servlet Engine
-
Integrated Message Queue
-
Easy scaling
-
Webservices
要求:
-
PHP 5.4+ on x64 or x86
-
ZTS enabled (thread safety)
-
POSIX threads implementation
-
Memcached (2.1+)
技術特性
- Usage of the phtreads PECL extension of Joe Watkins (https://github.com/krakjoe/pthreads)
- Supports usage of DI & AOP inside containers (tdb)
- Supports annotations to configure beans (tbd)
- Configration by exception, optional usage of deployment descriptors (tbd)
示例配置:
<servlet>
<description><![CDATA[A demo servlet]]></description>
<display-name>DemoServlet</display-name>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>\TechDivision\Example\Servlets\DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> 示例代碼:
public function doGet(Request $req, Response $res)
{
// build path to template
$pathToTemplate = $this->getServletConfig()->getWebappPath() .
DIRECTORY_SEPARATOR . 'static' .
DIRECTORY_SEPARATOR . 'templates' .
DIRECTORY_SEPARATOR . 'layout.phtml';
// init template
$template = new DemoTemplate($pathToTemplate);
$baseUrl = '/';
// if the application has NOT been called over a
//VHost configuration append application folder naem
if (!$this->getServletConfig()->getApplication()->isVhostOf(
$req->getServerName())
) {
$baseUrl .= $this->getServletConfig()->getApplication()->getName() . '/';
}
// set vars in template
$template->setBaseUrl($baseUrl);
$template->setRequestUri($req->getUri());
$template->setUserAgent($req->getHeader("User-Agent"));
$template->setWebappName($this->getServletConfig()->getApplication()->getName());
// set response content by render template
$res->setContent($template->render());
} 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!