关闭

简单说说基本上都是从服务器,Apache,数据库这些方面来进行的优化

标签: 优化数据库apachephp服务器
111人阅读 评论(0) 收藏 举报
分类:

我在编写程序时,总是想要使自己代码资源最小,运行速度快,代码量更少。在追求这些的同时却失去了很多东西。下面我想讲讲我对PHP优化的理解。优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。

 我这里所说的优化,基本上都是从服务器,Apache,数据库这些方面来进行的优化,而并不是对的PHP代码加以改进从而提高程序的运行速度

  一 在非代码处进行优化有以下好处:

  1、通常情况下能够大大提高效率

  2、不会危及到代码的完整性

  3、能够快速部署

  二 利用缓存技术

   在说到缓存技术的时候不得不提到memcached ,memcached,rids 等.高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。

  Memcached的原理

  memcached 是以守护程序方式运行于一个或多个服务器中,等待接收客户端的连接操作,客户端可以由各种语言编写(例如PHP)。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。

  1、编译与OPCODE缓存

  因为PHP是解释型的语言,所以每个PHP文件在运行的时候都需要编译后再执行,同一个文件,不同的用户访问,或者同一个用户不同时间访问同一个文件,每次都需要重新编译然后运行,这样就耗费了大量时间。

  通过编译缓存每个文件在修改之后只编译一次这样就减少对文件操作,用户访问后机器指令直接从内存中取出并执行而不是硬盘中读出。

  最常见的PHP编译缓存工具有:APC,Accelerator,xcache

  2、全局页面缓存-- Squid Cache

  Squid Cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器,Squid作为网页服务器的前置cache服务器通过缓存相关请求来提高Web服务器的速度。

  3、局部缓存之SQL缓存

 应用程序中主要的瓶颈可以追溯到数据库的操作中,一般复杂的数据库查询耗费了大量时间,而SQL缓存可以大大降低查询负荷。

  使用 memcached 扩展:SQL缓存

  代码片段:

  $key = md5(“some sort of sql query”);

  if (!($result = memcache_get($key))) {

  $result = $pdo->query($qry)->fetchAll();

  // 缓存查询结果30分钟

  memcache_set($key, $result, NULL, 1800);

  }

  4、局部缓存做局部代码块缓存

  为了优化PHP程序,有时候我们不得不优化一个个代码段来减少那么一点点的执行的时间,可以通过缓存来直接忽略这些代码段的优化,这样做的好处是:

  1、见效相对比较快;

  2、不会破坏以前的代码;

  3、速度要比优化代码要快得多;

  代码块缓存的列子(同样使用了memcached扩展)

  代码片段:

  function complex_function_abc($a, $b, $c) {

  $key = __FUNCTION__ . serialize

  (func_get_args());

  if (!($result = memcache_get($key))) {

  $result = //函数代码

  // 储存执行结果30分钟

  memcache_set($key, $result, NULL, 18000);

  }

  return $result;

  }

 当然除了上述方法外还可以用到文件缓存(将数据库中的数据取出储存在文件中),还可以生成静态HTML文件等,但是这些方法的缓存还是将文件储存在硬盘上而不是内存中。

  输出控制

  除了上述缓存技术外还可以通过输出控制来让程序执行的时间更少

  下面通过PHP与APACHE来说说输出控制

  1、PHP输出控制

  这里最主要用到ob_start()以及PHP中的OB系列函数,这些函数可以做什么呢?

  代码示例:

  <?php

  ob_start(); //打开缓冲区

  ?>

  php页面的全部输出

  <?php

  $content = ob_get_contents(); //取得php页面输出的全部内容

  $fp = fopen("output.html", "w"); //创建一个文件,并打开,准备写入

  fwrite($fp, $content); //把php页面的内容全部写入output.html,然后……

  fclose($fp);

  ?>

 

  当然这个ob系列函数还有其他很多用处我就不在这里一一说明了。

  2、apache输出控制

  将SendBufferSize设置为页面大小,这样就能将页面一次性放在发送缓冲区从而增加处理速度。

  SendBufferSize 指令

  说明:TCP发送缓冲区大小(字节)

  语法:SendBufferSize bytes

  默认值:SendBufferSize 0

  作用域:server config

  状态:MPM

  模块:beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

  这个指令设置服务器的TCP发送缓冲区的大小(字节)。提高这个值会导致两个后果:高速度和高潜伏时间(100ms左右)。如果设置为"0",将使用操作系统默认值。

  通过源代码方式编译你的Apache/PHP/Database 可让你的程序增加速度速.

  

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Hibernate面试题+答案

篇幅很长,请耐心阅读和学习,希望对你有所帮助!1.下面不属于持久化的是( a) A.把对象转换为字符串的形式通过网络传输,在另一端接收到这个字符串后能把对象还原出来B.把程序数据从数据库中读出来 C....
  • u011225629
  • u011225629
  • 2015-08-28 20:23
  • 8456

SQL数据库优化方面的经验

1、用PreparedStatement一般来说比用Statement性能高,一个sql发给服务器去执行,涉及步骤:语法检查,语义分析,编译,缓存。 2、有外键约束会影响插入和删除性能,如果程序能够保...
  • daodaipsrensheng
  • daodaipsrensheng
  • 2016-08-29 10:42
  • 5112

事务的基本概念和事务的性质

所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或者整个程序。 事务和程序是两个概念。一...
  • zhuyan020389
  • zhuyan020389
  • 2016-06-05 19:51
  • 1846

java 客户端和服务器端相互通信(都是从控制台输入)

一、客户端的程序(没用线程,本来想建的,但又觉得麻烦,我是个懒人) package day133; import java.io.*; import java.net.Socket; ...
  • haikuotiankong1997
  • haikuotiankong1997
  • 2012-04-25 20:15
  • 4627

MySql数据库优化可以从哪几个方面进行?

数据库优化可以从哪几个方面进行?老司机来带你!
  • q602075961
  • q602075961
  • 2017-05-01 23:44
  • 1204

weka,很多软件的算法都是从这里抄的

  • 2007-02-08 21:01
  • 3.32MB
  • 下载

一些数据挖掘的论文,都是从收费网站上下的

  • 2009-08-14 17:06
  • 7.15MB
  • 下载

代立东-----使用MAT分析内存泄露【还有其他文章都是BigData优化方面的内容,很有用】

文章来源:http://blog.csdn.net/oDaiLiDong/article/details/45840163?ref=myread 使用MAT分析内存泄露 对于大型服务端...
  • buster2014
  • buster2014
  • 2015-05-21 08:26
  • 344

如何对Apache Web服务器进行性能优化

提供:ZStack云计算 系列教程本教程为Django规模扩展系列三篇中的第二篇。内容介绍Apache是一套极为强大的Web服务器。为了简化初始设置,其提供多种预安装模块。如果大家希望快速实现项目上线...
  • zstack_org
  • zstack_org
  • 2017-03-31 10:03
  • 665

apache服务器怎么样进行高性能优化

对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问量环境下发挥出更好的性能。以下我们对Apache配置文件httpd.co...
  • m0_37412958
  • m0_37412958
  • 2017-11-04 10:31
  • 31
    文章分类
    文章存档