调优LAMP 应用程序的5 种简单方法:
使用操作码缓存、优化 PHP 设置、管理require和include、优化数据库、有效缓存数据、
简介
Wikipedia、Facebook 和 Yahoo! 等主要 web 属性使用 LAMP 架构来为每天数百万的请求提供服务,而 Wordpress、Joomla、Drupal 和 SugarCRM 等 web 应用程序软件使用其架构来让组织轻松部署基于 web 的应用程序。
该架构的优势在于其简单性。而 .NET 这样的堆栈和 Java™ 技术可能使用大量硬件、昂贵的软件栈和复杂的性能调优,LAMP 堆栈可以运行于商品硬件之上,使用开源软件栈。由于软件栈是一个松散的组件集,而非一个整体堆栈,性能调优是一大挑战,因为需要分析和调优每个组件。
然而,这有几个个简单性能任务会对任何规模的网站的性能产生巨大的影响。在本文中,我们将探讨旨在优化 LAMP 应用程序性能的 5 个这样的任务。这些项目应当很少需要对您的应用程序进行架构更改,使其成为***化您的 web 应用程序所需的响应能力和硬件需求的安全、便捷的选择。
有效缓存数据
正如我们在上一节看到的,数据库往往容易成为您 web 应用程序性能的***痛点。但是如果您要查询的数据不经常改变怎么办?在这种情况下,一个好的选择就是在本地存储这些结果,而非针对每个请求调用查询。
我们之前探究的两个操作码缓存 APC 和 Wincache 具有实现上述操作的工具,其中您可以将 PHP 数据直接存储到一个共享内存段中,便于快速查询。清单 3 提供了具体示例。
清单 3. 使用 APC 缓存数据库结果的示例
- function getListOfUsers()
- {
- $list = apc_fetch('getListOfUsers');
- if ( empty($list) ) {
- $conn = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'dbuser', 'dbpass');
- $sql = 'SELECT id, name FROM users ORDER BY name';
- foreach ($conn->query($sql) as $row) {
- $list[] = $row;
- }
- apc_store('getListOfUsers',$list);
- }
- return $list;
- }
我们仅需一次执行查询。之后,我们将结果推送到 getListOfUsers 键下的 APC 缓存中。从这里开始,直到缓存到期,您就能够直接从缓存中获取结果数组,跳过 SQL 查询。
APC 和 Wincache 并非一个用户缓存的惟一选择;memcache 和 Redis 是不需要您在与 Web 服务器相同的服务器上运行用户缓存的其他流行选择。这就提高了性能和灵活性,特别是当您的 web 应用程序跨多个 Web 服务器向外扩展时。
结束语
在本文中,我们探究了调优您的 LAMP 性能的 5 种简单方法。我们不仅通过利用一个操作码缓存和优化 PHP 配置探究了 PHP 级别的技术,而且探究了如何优化您的数据库设计来实现合理的索引编制。我们还探讨了如何利用一个用户缓存(以 APC 为例)来展示如何在数据不经常改变时避免重复的数据库调用。至此、五种调优方法结束。