网普技术论坛 网普科技  
» 游客:   网普主页 | 注册 | 登录 | 帮助
 

作者:
标题: 网站优化讨论(PHP) 上一主题 | 下一主题
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#1  网站优化讨论(PHP)

1.php -> gzip   
3.php -> cache
2.php -> gzip - > cache









使用mod_gzip模块给网站提速
作者:陶然

写于2003年6月。最后更新: 06/04/2003 01:05:58

版权声明:本文可以任意转载,转载时请保持文章的完整性,并以超链接形式标明文章原始出处和作者信息及本声明。
http://www.taoran.net/tech/mod_gzip.html

mod_gzip模块不属于apache自主开发的模块,所以不包括在apache的软件包里。但它对网站的
加速作用却不容忽视。它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载
到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程,它可以节省40%左右的
流量。更为重要的是,它可以对动态生成的,包括CGI、PHP等脚本输出的网页也能进行压缩,压
缩效率惊人(一般都在60%-85%之间)。

一、操作系统

  RatHat Linux 7.2
  Apache 1.3.27 (已按DSO模式安装)

二、需要的软件
  
  mod_gzip.so (http://sourceforge.net/projects/mod-gzip/)
  
三、mod_gzip的安装
  cp mod_gzip.so /usr/local/apache/libexec

  也可以下载源码编译安装。

四、apache配置文件的修改
  在httpd.conf的相应位置分别加上下面两行:
  LoadModule gzip_module libexec/mod_gzip.so
  AddModule mod_gzip.c

  在配置文件的最后,虚拟主机配置之前加上以下一段:
  <IfModule mod_gzip.c>
  mod_gzip_on yes
  mod_gzip_dechunk yes
  mod_gzip_keep_workfiles No
  mod_gzip_temp_dir /tmp
  mod_gzip_minimum_file_size 1002
  mod_gzip_maximum_file_size 0
  mod_gzip_maximum_inmem_size 1000000
  mod_gzip_item_include file \.htm$
  mod_gzip_item_include file \.html$
  mod_gzip_item_include mime text/.*
  mod_gzip_item_include file \.php$
  mod_gzip_item_include mime "application/x-httpd-php.*"
  mod_gzip_item_include mime httpd/unix-directory
  mod_gzip_item_include handler cgi-script
  mod_gzip_item_exclude file "\.css$"
  mod_gzip_item_exclude file "\.js$"
  </IfModule>

  若要观看使用效果,可以加上下面两行:
  LogFormat "%h %l %u %t \"%V %r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n
        Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip
  #以上是一行
  CustomLog /usr/local/apache/logs/mod_gzip_log common_with_mod_gzip
   
五、重新启动apache,浏览一会网页,再查看日志
  211.156.17.125 - - [03/Jun/2003:11:45:57 +0800] "www.xxxxx.com GET /xxxxx/xxxxx.php HTTP/1.1"
        200 3589 mod_gzip: DECHUNK:OK In:23913 Out:3589:85pct.
  #以上是一行

  可以发现mod_gzip已经起作用了,压缩效率为85%。原先需要下载23K字节才能显示的网页,
  现在只须下载不到4K字节就看到了,可以感觉到浏览速度快了不少。而CGI和PHP生成的动态
  网页也可以看到被压缩传输了。考虑到效率的问题,图片类型(本身已经是压缩的)和小于
  1K的文件、还有配置文件里指定的.css和.js文件是不进行压缩的。


陶然
2003/06/04

2005-9-17 04:54 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#2  为 加速 PHP 程序而努力

为 加速 PHP 程序而努力  
  
由 徐永久 发表于 2001年10月16日 20:59。   

动态网站的内容加速显示十分重要,本文通过对 PHP 几个函数的深入讨论,提出了 PHP 网页压缩和缓冲的解决方案


一、介绍几个控制 PHP 输出的函数

PHP4 采用了缓冲机制,在你决定发送以前,所有内容只是存在于缓冲中,而不是直接发送给浏览器,虽然你可以用 header 和 setcookie 函数来实现,但是这两个函数相比于功能强大的输出函数来说只是一点“雕虫小技”。让我们来看看这些函数的真本事:


void ob_start(void);
本函数告诉 PHP 处理器把所有输出重定向到内部缓冲,调用这个函数后,就不会有输出到浏览器。

string ob_get_contents(void);

本函数把输出缓冲返回到一个字符串,你可以用来把堆积起来的输出一起发送到浏览器。当然要先关掉缓冲。

int ob_get_length(void);
本函数返回输出缓冲的长度。

void ob_end_clean(void);
本函数清⒐乇栈撼濉T谑涑龅戒榔髦澳阈枰褂谜飧龊?
void ob_implicit_flush ([int flag])
本函数用来控制隐式缓冲泻出,缺省为 off,如果打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。


二、采用输出控制来压缩 PHP 的输出

在开始之前,要保证你的 PHP4 编译时支持 Zlib。

首先,初始化输出缓冲:

<?php
ob_start();
ob_implicit_flush(0);
?>

然后产生所有的输出内容。

<?php
print("本例为压缩输出!");
?>

页面生成以后,采用:

<?php
$contents = ob_get_contents();
ob_end_clean();
?>

还要检查浏览器是否支持压缩数据,我们采用在变量 $HTTP_ACCEPT_ENCODING 中检查 "gzip, deflate"的办法:

<?php

if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) {
// 产生 gzip 后的内容
} else {
echo $contents;
}

?>

下面我们分析怎样产生 gzip 输出:

<?php

// 告诉浏览器下面接收的是 gzip 数据。

header("Content-Encoding: gzip");

// 显示 gzip 文件的文件头
// 只要一次就够了
echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";

// 计算长度和 CRC 校验码
$Size = strlen($contents);
$Crc = crc32($contents);

// 压缩数据
$contents = gzcompress($contents, 9);

// 不能直接在这里输出内容,因为还没有写入 CRC 呢!
$contents = substr($contents, 0, strlen($contents) - 4);
echo $contents;

gzip_PrintFourChars($Crc);
gzip_PrintFourChars($Size);

function gzip_PrintFourChars($Val) {
for ($i = 0; $i < 4; $i ++) {
echo chr($Val % 256);
$Val = floor($Val / 256);
}
}

?>


三、缓冲 PHP 的输出

在 PHP4 里能很容易的实现缓冲,我们来看例子:

<?php

// 对请求的 URI 产生唯一的文件名。
$cached_file=md5($REQUEST_URI);

if((!file_exists("/cache/$cached_file"))||(!is_valid("/cache/$cached_file"))) {

ob_start();
ob_implicit_flush(0);

// 在这里输出缓冲

$contents = ob_get_contents();
ob_end_clean();

$fil=fopen($cached_file,"w+");
fwrite($fil,$contents,$strlen($contents));
fclose($fil);
}

readfile($cached_file);

?>

四、结论

PHP 输出缓冲函数在操作脚本输出方面十分有用,把缓冲压缩后输出能减少 80% 的输出时间,这对于存取其他数据资源(例如数据库或者 XML)来说,也是一个很好的缓冲机制。

2005-9-17 04:55 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#3  采用 PEAR 来缓冲 PHP 程序之一

采用 PEAR 来缓冲 PHP 程序之一  
  
由 徐永久 发表于 2001年10月17日 20:28。   

PHP 世界中缓冲是一个热门的话题,因为 PHP 产生的动态页面,每次用户请求都需要重新计算,不论请求的结果是否一样,同时,PHP 每次都会编译一次脚本。这样的超负荷运转对一个流量很高的网站来说肯定难以忍受。幸运的是, Web 的结果可以缓冲,而不需要重新运行和编译脚本,商品化的产品像 ZendCache 或者开源的 Alternate PHP Cache都提供了把 PHP 脚本编译为字节代码并缓冲的办法。

PEAR 的缓冲包提供了缓冲动态内容,数据库查询和 PHP 函数调用的框架。

就像 Perl 有 CPAN, TeX 有 CTAN,PHP 也有自己的中心资源库,存放类,库和模块。这个库称为 PEAR(PHP Extension and Add-On Repository)。

本文假设你已经安装了 PEAR 环境,如果没有的话,可以去 PHP 网站下载。


PEAR 的缓冲包包含一个总体的缓冲类和几个特别的子类。缓冲类使用容器类来存贮和管理缓冲数据。

下面是 PEAR 缓冲当前所包含的容器,以及各自的参数:

file -- file 容器在文件系统存储了缓冲的数据,是最快的容器。

cache_dir -- 这是容器存储文件的目录。

filename_prefix -- 缓冲文件的前缀,例如:"cache_"。

shm -- shm 容器把缓冲数据放入共享内存,基准测试显示,目前的实现下,这个容器的速度要比文件容器慢。

shm_key -- 共享内存使用的键值。

shm_perm -- 使用共享内存数据段的权限。

shm_size -- 分配共享内存的大小。

sem_key -- 信号灯的键值。

sem_perm -- 信号灯的权限。

db -- PEAR 的数据库抽象层。

dsn -- 数据库连接的 DSN 。可以参考 PEAR 的 DB 文档。

cache_table -- 表的名字。

phplib -- phplib 容器使用数据库抽象层存储缓冲。

db_class

db_file

db_path

local_file

local_path

ext/dbx -- PHP 的数据库抽象层扩展,如果像把缓冲存入数据库,可以采用这个容器。

module

host

db

username

password

cache_table

persistent

使用 PEAR Cache 所得到的性能提升取决于你所选择的缓冲容器,例如,把数据库的结果再次存入数据库缓冲中就显得毫无意义。

PEAR Cache 的函数缓冲模块能把任何函数或者方法的结果缓冲,不论是 PHP 的内置函数还是用户自定义函数,他缺省采用文件容器,把缓冲数据放入到一个叫做
function_cache 的目录。


Cache_Function 类的构造器可以有三个可选的参数:

$container :缓冲容器的名字。

$container_options :缓冲容器的数组参数。

$expires:缓冲对象过期的时间(秒数)。

普通的函数调用采用 Cache_Function 类的 call() 方法时,就能触发缓冲。调用 call() 很容易,的一个参数是函数的名字,然后是函数的参数,第二个参数是要调用函数中的第一个,依此类推,我们来看例子:

例 1: 缓冲函数和方法的调用

// 调用 PEAR Cache 的函数缓冲。

<?php
require_once 'Cache/Function.php';

// 定义一些类和函数。

class foo {
function bar($test) {
echo "foo::bar($test)<br>";
}
}

class bar {
function foobar($object) {
echo '$'.$object.'->foobar('.$object.')
';
}
}

$bar = new bar;

function foobar() {
echo 'foobar()';
}

// 取得 Cache_Function 对象

$cache = new Cache_Function();

// 对 foo 类的静态函数 bar() 作缓冲(foo::bar())。
$cache->call('foo::bar', 'test');

// $bar->foobar()
$cache->call('bar->foobar', 'bar');

$cache->call('foobar');
?>



下面我们采用 Cache_Output 来把输出作缓冲:

例子 2: 缓冲脚本的输出

// 加载 PEAR Cache 的输出缓冲

<?php
require_once 'Cache/Output.php';

$cache = new Cache_Output('file', array('cache_dir' => '.') );

// 计算要缓冲页面的标记,我们假定页面的缓冲取决于
// URL, HTTP GET 和 POST 变量以及 cookies。

$cache_id = $cache->generateID(array('url' => $REQUEST_URI, 'post' => $HTTP_POST_VARS, 'cookies' => $HTTP_COOKIE_VARS) );

// 查询缓冲

if ($content = $cache->start($cache_id)) {

// 缓冲命中
echo $content;
die();
}

// 缓冲丢失

// -- 在这里插入内容产生代码 --

// 把页面存入缓冲
echo $cache->end();
?>

利用 Cache_Output 类,很容易把一个动态的数据库驱动的网站应用转化为静态,从而极大的提升站点的性能。

越来越多的站点在采用 GZIP 压缩 HTML 内容,这样减少了服务器的带宽消耗,对于使用 Modem 上网的用户来说也能受益不少。

Cache_OutputCompression 扩展了 Cache_Output 类的功能,他把 GZIP 压缩的 HTML 内容进行缓冲,从而节省了 CPU 压缩的时间。

待续...

2005-9-17 04:56 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#4  安装另外一个 PHP 缓冲加速器

安装另外一个 PHP 缓冲加速器  
  
由 徐永久 发表于 2003年07月05日 03:38。   

PHP 加速的工具有很多,原理也都类似。但是以 Zend 的产品为最好。
网络上介绍 PHP 性能优化的文章中谈到了 Turck MMCache 这个产品。
http://www.turcksoft.com/en/e_mmc.htm#download


拿来使用,也看不出效果。

但是愿意把安装经过介绍一遍:

phpize
./configure --enable-mmcache=shared
make
make install
会安装到 /usr/local/lib/php/extensions/no-debug-non-zts-20020429/
这样的目录下,我觉得目录太长,
把文件 mv 到 /usr/local/lib 了。
修改 php.ini :

zend_extension="/usr/local/lib/mmcache.so"
mmcache.shm_size="16"
mmcache.cache_dir="/tmp/mmcache"
mmcache.enable="1"
mmcache.optimizer="1"
mmcache.check_mtime="1"
mmcache.debug="0"
mmcache.filter=""
mmcache.shm_max="0"
mmcache.shm_ttl="0"
mmcache.shm_prune_period="0"

这些内容可以加到 原来的 Zend Optimizer 后面。

建立缓冲目录:
mkdir /tmp/mmcache
chmod 0777 /tmp/mmcache

最新版本是 v2.3.18, 包含了 代码加密和加载程序。能对 PHP 代码加密。
但是,作者推荐不应用于商业环境,因为 2.4.0 以后恐有大的结构变动。
加密后的代码不能解密的。


对于 PHP 的黑客,可以尝试使用这个工具的:

http://www.turcksoft.com/en/e_mmc.htm#download

2005-9-17 04:56 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#5  一个利用 Squid Cache 的 PHP 配置例子

一个利用 Squid Cache 的 PHP 配置例子  
  
由 徐永久 发表于 2005年05月18日 15:15。   

Squid 缓冲服务器能极大的提高服务器性能,特别是对于数据库负载比较大的情况下,运用 Squid 更加高效。 现在很多大型网站都利用 Squid 来加速,本文通过 PHP 代码的例子,解释了怎样利用 Cache 来实现页面缓冲。

修改前,不利用缓冲的代码:
/*
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
*/

修改后的代码:
header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 60 * 10). " GMT");
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
// header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' )+3600 . ' GMT' );
header( "Cache-Control: public" );

对于需要 Basic 认证的网页,如果需要缓冲,必须使用最后一句 public 的头。

2005-9-17 04:57 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
ajivanet
Netpu VIP





积分 45
发贴 45
注册 2004-10-9
状态 离线
#6  

提升PHP执行速度全攻略

作者: 未知   出处: 先锋站长   日期: 2004-11-16 20:37:22  



php的优点之一是速度很快,对于一般的网站应用,可以说是已经足够了。不过如果站点的访问量很高、带宽窄或者其它的因素令服务器产生性能瓶颈的时候,你可能得想想其它的办法来进一步提高php的速度了。这篇文章将从几个方面介绍如何做到这一点,从而令用户浏览的时候更加“爽”。

  代码优化


  在这里并不想再次告诉你
如何写更干净的代码,这一点我想每个人都清楚,在需要速度的时候,你可能已经在php源代码的优化上面做了不少的工作,这里所提出的是,这个烦琐的工作可以交由其它工具来完成。这就是zend optimizer,此程序可以从zend technologies的网站(http://www.zend.com/)免费得到。它的原理很简单,通过检测zend引擎产生的中间代码,并且优化它来得到更高的执行速度。我认为优化代码是一项颇烦琐的工作,而且优化后的代码可能变得难以理解,尤其是当你放下该php程序一段时间后,突然间客户要求你做一些修改时,可能你自己也不懂了;-)。因此我建议你在php的源代码较为复杂的时候,用zend optimizer来做这个优化的工作,好处是它不会令你的代码变得复杂难懂。

  安装zend optimizer是非常简单的。只要根据你使用的平台,下载相关的预编译库,并且在你的php.ini中加入两行,重新启动你的web服务器就行了!

  zend_optimizer.optimization_level=15zend_extension="/path/to/zendoptimizer.so" zend_loader.enable=off

  你可能有点奇怪,不是说两行吗,怎么变成三行了。不过第三行是可选的,看来禁止这个zend_loader将会令优化的速度更快,因此不妨在你的php.ini文件中多加这一行。要注意的是:只有在你不使用zend encoder runtime的时候,才可以禁止zend_loader,关于zend encoder runtime,还会在下文提到。

  要更快吗?使用cache(缓冲)吧

  如果你的php应用还需要更快的速度,下一个办法是缓冲。要实现这一点,有几种不同的方式。我自己就试用过zend cache(评测版本),apc和afterburner cache。

  以上提到的都是“缓冲模块”。它们的原理都差不多,在php文件被首次请求的时候,通过将你的php源代码的中间代码存储在web服务器的内存中,对于以后同样的请求,都直接提供内存中的“编译”版本。由于它可以令磁盘的访问达到最小化,因此这个方法确实可以极大地提高php的性能。更为方便的是,当你的php源代码修改时,缓冲的模块可以察觉到这些变化,并且重新载入一样,因此你不必担心客户得到的是旧版本的程序。这些缓冲的模块确实不错,但是我应该选用哪一种呢?下面分别介绍一下:

  zend cache是zend technologies的一个商业化的产品(它也是免费为我们提供php引擎和zend optimizer的公司)。它确实不错。在首次运行后,你可以明显察觉到php的速度得到了很大的提高,服务器的空闲资源也更多了。缺点是你要付费购买它,但就性价比来说,还是非常值得的。

  afterburner cache是bware technologies(bwcache.bware.it)提供的免费缓冲模块。当前还只是beta版,它所做的工作看来与zend cache差不多,不过性能的提高就比不上zend cache,而且现有的版本不能和zend optimizer一起工作,不过它是免费的。

  apc(alternative php cache)是由community connect(apc.communityconnect.com)提供的另一个免费模块。它的工作很稳定,速度也有不少的提高,要注意的是,我还没有找到一个官方的测试数据,这些只是在我的应用上作测试,因此不能下一个结论
web内容的压缩(令你客户用起来更“爽”)

  经过以上两个的方法,相信你的php应用的性能已经得到了很大的提高,现在该从另一个方面来考虑了:下载速度。如果你的应用只是在公司内跑,所有的客户都使用100mb/s的以太网连接到服务器,这可能不是一个问题,但是如果你的客户中有使用慢速的modem连接的,你就要考虑使用内容压缩这个方法了。
根据ietf的规范,大多数的浏览器都支持gzip的内
容压缩。这意味着你在将web的内容发给客户的浏览器前,可以先使用gzip进行压缩,浏览器在接收的时候就会自动解压数据,并且令用户看到原来的页面。同样,压缩web页面的内容也有几个不同的方法。

  mod_gzip是remote communications(http://www.phpbuilder.com/columns/www.remotecommunications.com)免费提供的一个apache模块,它可以压缩静态的web页面。它工作得很好,你只需要将它和apache一起编译就行了(或者将它作为一个dso使用)。remotecommunications的人说它还可以压缩动态的内容,包括mod_php, mod_perl等。不过我尝试了一下,看来并不行。我在mod_gzip的邮件列表中了解到,这个bug将在下一个版本中修正(我想应该是1.3.14.6f版本)。不过你仍然可以用它作静态内容的压缩。

  不过我们还想压缩动态的内容,因此我们必须找另外的办法。一个办法是使用class.gzip encode.php(http://leknor.com/code/),只要在你的php脚本中的开头和结尾调用这个php类,就可以压缩你的页面内容。如果整个站点都需要这样的压缩,你可以在你的php.ini文件中的auto_prepend和auto_append中调用这些函数。它工作得很好,不过在负载很重的站点上,它明显会带来一点的系统开销。要详细了解它是如何工作的,可以看一下它的类代码(你至少需要在编译php时加入zlib支持)。作者在里面的说明也非常详细,你可以得到任何需要了解的东西。

  在最近,我也看到了一篇关于php输出缓冲的文章。它说的是php4.0.4推出了一种新的输出缓冲的处理手段--ob_gzhandler,它的作用和上面介绍的类相同,但区别是你只要在你的php.ini中使用以下的句法就行了:

  output_handler = ob_gzhandler ;

  这样将激活php的输出缓冲功能,并且压缩所有它发送的东西。出于某些特别的原因,如果你不想在这里设置的话,只在需要的地方才改变这个默认设置的话(不压缩),只要在需要压缩的php源码目录中,修改一下.htaccess文件就行了,使用的句法如下:

  php_value output_handler ob_gzhandler

  ...或者直接在你的php代码中调用它,以下面的方式:

  ob_start("ob_gzhandler");

  这个输出缓冲处理的方法很好,并且不会为服务器带来额外的系统开销。我十分建议你使用这种方法。它的改变可以用以下的例子说明,如果客户使用的是28.8k的modem的话,经过这个处理,他将会认为突然间换成了一个isdn接入一样。要注意的一点是:netscape communicator并不支持图象的压缩,所以将显示不出来。因此除非你的客户全部使用internet explorer,否则你必须禁止压缩jpeg和gif图象。其它文件的压缩应该没有问题,但是我建议你最好测试一下,特别是浏览器使用了不常见的插件或者是少人用的浏览器。

  其它有用的东西...

  zend technologies的在线商店在今年1月24开通了,并且售卖一些与php相关的有趣产品。包括前面提到的zend cache,zend encoder(简单说来,是php代码的编译器,可以产生编译的类,这样你就可以售卖给顾客而不用担心泄露源代码。在需要运行这些类的web服务器上,将要使用zend encoder runtime来解码),zend ide(一个为php而设的集成化开发环境,带有很多强大的性能),还有为php开发者提供的支持服务。

  结论

  使用这篇文章提到的技术,你将可以极大地提高站点的性能,不过请注意以下几点:

  1.瓶颈或许不在php,你需要考察应用中的每个对象(例如数据库)

  2.一个web服务器的性能都是有限制的,因此,不要认为性能不好就是php的原因,也可能是访问量很大,你的服务器需要升级了,或者考虑使用负载均衡的系统(将会花很多钱)

  3.不要认为内容压缩不重要,在100mb/s的局域网中,你的php应用或许性能很好,但要考虑到使用慢速modem的用户。

2005-9-17 05:04 PM
查看资料  发送邮件  发短消息   编辑帖子  引用回复 顶部
网普科技
网普管理员

网普科技人民公仆


积分 3080
发贴 2863
注册 2004-6-26
来自 网普科技
状态 离线
#7  

这么专业:)



天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。



网普科技,优质美国主机服务!
美国Linux主机,美国虚拟主机
支持PHP+MYSQL+cPanel+EMAIL
为用户负责,拒绝反动、赌博及色情内容! QQ:126818

发送QQ消息
2005-9-18 09:06 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部
茱莉娅
THE BODY SHOP美容顾问

茱莉娅美体小铺


积分 3080
发贴 2863
注册 2009-5-21
来自 茱莉娅美体小铺
状态 离线
#7  赞助商信息The body shop

茱莉娅美体小铺
茱莉娅美体小铺淘宝店
茱莉娅美体小铺


茱莉娅美体小铺淘宝店
2005-9-18 09:06 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转:  




Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.007337 second(s), 7 queries, Gzip enabled
------------------------------------------------------------------------------
本论坛属网普科技交流与技术支持论坛!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
美国主机, 美国虚拟主机, cPanel+PHP+Mysql+Ftp+Email+Zend+GD2+国际域名支持
技术支持 QQ: 126818 EMail & MSN: support[AT]netpu.net
[ 联系我们 ] - [ 网普科技 ]