快速业务通道

通过缓存数据库结果提高PHP性能

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
ds!\n";
$cache->drop(''getOrderFields'', $order_no);
 }

if (list($nrows, $orderitems) = $cache->call(''getOrderItems'', $order_no)){
//print "<h3>LINE ITEMS IN ORDER #$order_no</h3>";
print "<table border=1>";
print "<tr>\n";
while (list($key, $value) = each($orderitems)) {
print "<th>$key</th>\n";
  }
print "</tr>\n";
for ($i = 0; $i < $nrows; $i++) {
print "<tr>";
print "<td>".$orderitems[''ORDER_ID''][$i]."</td>";
print "<td>".$orderitems[''LINE_ITEM_ID''][$i]."</td>";
print "<td>".$orderitems[''PRODUCT_ID''][$i]."</td>";
print "<td>".$orderitems[''UNIT_PRICE''][$i]."</td>";
print "<td>".$orderitems[''QUANTITY''][$i]."</td>";
print "</tr>";
  }
print "</table>";
} else {
print "Some problem occurred while getting order line items";
$cache->drop(''getOrderItems'', $order_no);
 }
?>
  “清单 7”中的 testCache.php 脚本应与 order_no URL 参数(代表 OE.ORDER 表中存储的订单 ID)一起被调用。例如,要检索与 ID 为 2408 的订单相关的信息,需要在浏览器中输入如下所示的 URL:

http://webserverhost/phpcache/testCache.php?order_no=2408  结果,浏览器将生成以下输出:

ORDER #2408
DATE:  29-JUN-99 06.59.31.333617 AM 
CUST_ID:  166 
TOTAL:  309 

ORDER_ID  LINE_ITEM_ID  PRODUCT_ID  UNIT_PRICE  QUANTITY 
2408  1  2751  61  3
2408  2  2761  26  1 
2408  3  2783  10  10

  现在,如果您单击浏览器中的 reload 按钮,testCache.php 脚本将不会再次调用 getOrderFields 和 getOrderItems 函数。相反,它将从本地缓存中读取它们的结果。因此,从现在起的 24 小时(因为 lifeTime 设置为 86400 秒)以内,本地缓存即可满足使用 order_no=2108 的每个 getOrderFields 或 getOrderItems 调用的需要。但请注意,Cache_Lite_Function 类未提供 API 来测试具有给定参数的给定函数是否存在可用缓存。因此,要确定每次使用相同参数调用函数时应用程序是实际上读取缓存还是仍执行该函数可能有点棘手。例如,在以上示例中,要确保缓存机制正常工作,您可以临时更改 connect.php 脚本中指定的连接信息,以便它无法建立数据库连接;比如指定一个错误的数据库服务器主机名称,然后再次使用 order_no=2108 运行 testCache.php 脚本。如果缓存正常工作,浏览器的输出应与先前的一样。

  此外,您还可以检查缓存目录,该目录作为 cacheDir 选项的值(在该示例中为 /tmp)传递给 Cache_Lite_Function 类的构造函数。在该目录中,您将找到两个刚创建的缓存文件,这些文件的名称类似于:cache_7b181b55b55aee36ad5e7bd9d5a091ec_3ad04d3024f4cd54296f75c92a359154。注意,如果您是一位 Windows 用户,则可能要使用 %SystemDrive%\temp 目录保存缓存文件。如果是这样,则必须将 cacheDir 选项设置为 /temp/。

  验证缓存机制正常工作后,可以接着创建一个 PHP 来处理从数据库服务器收到的更改通知。“清单 8”是 dropResult.php 脚本。数据库服务器将调用该脚本来响应 ORDERS 和 ORDER_ITEMS 表的更改。

  清单 8. 处理从数据库服务器收到的更改通知

<?php
//File:dropResults.php
require_once ''Cache/Lite/Function.php'';

$options = array(
''cacheDir'' => ''/tmp/''
 );
$cache = new Cache_Lite_Function($options);
if (i

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号