当前位置:  编程技术>php
本页文章导读:
    ▪Windows IIS PHP 5.2 安装与配置方法       步骤一:下载php 5.2 for windows的安装包,解压至C:\php。注意此解压目录可以是在任何盘下,然而目录名不能包含空格; 以下是php5.2的文件目录: c:\php --dev | |-php5ts.lib --ext -- extension DLLs for PHP .........
    ▪PHP 组件化编程技巧       但其在UI方便却有些力不从心,不仅是PHP,任何一种Web编程语言在设计UI都有类似的问题,宿主语言与HTML混和在一个文件中,大量重复的 HTML代码,毫无任何技术含量,但又非常的费时费力。.........
    ▪PHP加速 eAccelerator配置和使用指南       前一段时间完成了服务器从FreeBSD4.10到6.1的升级,同时把PHP也升级到了最新的PHP5.1.4,Apache也升级到了最新的Apache2.2,为了更好的提高系统的性能考虑对PHP再进行一些优化,前两年接触过MMCac.........

[1]Windows IIS PHP 5.2 安装与配置方法
    来源: 互联网  发布时间: 2013-11-30
步骤一:下载php 5.2 for windows的安装包,解压至C:\php。注意此解压目录可以是在任何盘下,然而目录名不能包含空格;
以下是php5.2的文件目录:
c:\php

--dev

| |-php5ts.lib

--ext -- extension DLLs for PHP

| |-php_bz2.dll

| |-php_cpdf.dll

| |-..

--extras

| --mibs -- support files for SNMP

| --openssl -- support files for Openssl

| --pdf-related -- support files for PDF

| |-mime.magic

--pear -- initial copy of PEAR

|
|-go-pear.bat -- PEAR setup script

|-fdftk.dll

|-..

|-php-cgi.exe -- CGI executable

|-php-win.exe -- executes scripts without an opened command prompt

|-php.exe -- CLI executable - ONLY for command line scripting

|-..

|-php.ini-dist -- default php.ini settings

|-php.ini-recommended -- recommended php.ini settings

|-php5activescript.dll

|-php5apache.dll

|-php5apache2.dll

|-..

|-php5ts.dll -- core PHP DLL

|-...

步骤二:将c:\php目录下的php.ini-recommended(或php.ini-dist文件,官方推荐为前者)复制到当前目录,并修改文件名为php.ini;

步骤三:编辑php.ini。主要修改如下两行的值:
extension_dir = "c:\php\ext"
doc_root = "c:\inetpub\wwwroot"

修改时需要删除掉这两行行首的;注释。extension_dir的值为php安装目录下的ext目录,doc_root的值为IIS设置的主目录;

步骤四:设置环境变量。在Path后添加如下的值:
;:\php
然后重启计算机。

步骤五:打开Internet信息服务,找到“默认网站”,将网站停止。然后打开“属性”页。在“属性”页中找到“主目录”标签,单击“配置”按钮,添加应用程序映射。其值分别为:
可执行文件:c:\php\php5isapi.dll
扩展名:.php
其余不用修改,确定后,重新启动默认网站;

步骤六:在c:\inetpub\wwwroot下新建一个文件hello.php。输入内容:
<html>
<head>
<title>World</title>
</head>
<body>
<?php echo "Hello world" ?>

</body>
</html>
保存后,打开浏览器,输入地址:http://localhost/hello.php。如果网页中显示Hello world则说明安装正确。我们也可以在网页中通过查看hello.php的源代码,如果源代码中没有php代码,也说明安装是正确的。


参考了大量别人的安装文档后自己总结的一点东西,希望对大家有用。。。。
1. php安装的二种不同模式――CGI模式和模块化安装模式
在CGI模式下,如果客户机请求一个php文件,web服务器就调用php.exe去解释这个文件,然后再把解释的结果以网页的形式返回给客户机;而在模块化中,php与web服务器一起启动并运行的,所以从某种角度上来说,以apache模块方式安装php比CGI模式更好的安全性及更好的执行效率和速度
以下例子均以php4.4.0为例,在windows xp环境下实现。
1. IIS下的安装(ISAPI模式安装)
(1) 将php压缩包解压到c:\php\下
(2) 将php.ini-dist改名为php.ini后拷贝到c:\windows下(window 2000拷贝到c:\ winnt)
(3) 把c:\php\php4ts.dll拷贝到c:\windows\system32下(不一定需要)
(4) IIS5.0的配置。打开“控制面板”=》“管理工具”=》“Internet 服务管理器”。
右键点击“默认Web站点”,选“属性”。
单击“ISAPI筛选器”标签,点击“添加”,选择c:\php\sapi的php4isapi.dll,名字取为PHP。
单击主目录下的配置按钮,在“应用程序配置”对话框中单击“添加”将出现“添加/编辑应用程序扩展名映射”对话框。点击“浏览”,选择c:\php\sapi的php4isapi.dll。扩展名.php,其它默认即可。
2. IIS下的安装(CGI模式安装)
(1) 下载php的windows安装程序php-4.4.0-installer.exe,该安装程序不包括任何外部的php扩展(php_*.dll)。
(2) 按照向导一步步安装,安装向导会收集足够的信息来设置php.ini文件,并自动配置好IIS服务器。(以apache作服务器时也可以,但不能自动配置,需手动进行)
(3) 安装完成即为IIS安装CGI模式的php。
3. Apache的安装(模块化安装模式)
以apache 2.0.55为例说明
(1) 下载apache的安装包apache_2.0.55-win32-x86-no_ssl.exe。
(2) 运行你下载的安装文件安装apache安装文件会提示你输入主机名,管理员信箱等信息,这些信息安装完后可以在httpd.conf中修改,可以放心输入。
(3) 为了方便以后的操作,建议修改默认的安装程序性路径,这里我修改为“c:”
(4) 安装完成后,需要编辑apache2/conf/httpd.conf文件。
(5) 由于IIS默认占用80端口,我们需修改ServerName为“localhost:81”(213行)及端口号为81(120行的listen 80修改为listen 81)
(6) 加载php支持的apache的模块php4apache2.dll,在134行加入“LoadModule php4_module c:/php/sapi/php4apache2.dll”
(7) 加载支持的后缀名,在757行加入“AddType application/x-httpd-php .php .php3 .php4”
(8) 添加默认识别的php文件名,找到DirectoryIndex所在的322行,添加“index.php default.php default.htm default.html”
(9) 把c:\php\php4ts.dll拷贝到c:\windows\system32下(一定)
(10)打开开始菜单->运行,输入cmd命令
(11)进入到apache2/bin目录,运行apache –k install和apache –k start命令
(12)访问http://localhost:81显示APACHE欢迎页(apache安装成功)
(13)把要调试的php程序放到apache2/htdocs下,即可以调试php程序。
(14)也可将修改php调试程序放到自定义路径,修改httpd.conf的DocumentRoot的值即可
配置服务器的GD库支持:

1. 打开php.ini文件,找到extension=php_gd2.dll,并去掉前面的分号(555行)
2. 找到extension_dir并修改“extension_dir = "./"”为你安装php所在的extensions目录,我的是extension_dir = "c:/PHP/extensions"
3. 重启apache服务器即可

    
[2]PHP 组件化编程技巧
    来源: 互联网  发布时间: 2013-11-30

但其在UI方便却有些力不从心,不仅是PHP,任何一种Web编程语言在设计UI都有类似的问题,宿主语言与HTML混和在一个文件中,大量重复的 HTML代码,毫无任何技术含量,但又非常的费时费力。于是我就希望能够对之前做过的PHP项目UI部分进行总结和归纳,将其封装为一个个小的组件(就像 Delphi中的组件一样),在界面上呈现为统一的风格,日后可以再针对这结组件编写多个CSS文件,提供“换肤”功能。

所有的组件都继承自AbatractComponent这个类,并实现其中的toString()和render()方法。AbatractComponent又有三个主要的子类,一个是容器类Continer,其又派生出Panel、PopPanel和GroupPanel等类,第二个是控件类Control,是所有可视控件类的父类,如Button、LinkButton等类,第三个则是列表类List,实现有列表,名-值对的UI。

AbstractComponent部分代码:

代码如下:

<?php
/**
* Component Library
*
* @author Chris Mao
* @package Component
* @description All components must be extened from the class
* and override the both methods of toString.
* @copyright Copyright (c) 2009 JueRui Soft Studio
*
**/
class AbstractComponent {

/*
* @var _style the component style's array
*
* @access protected
*
*/
protected $_style = array();
/*
* @var _attributes the component attribute's string
*
* @access protected
*
*/
protected $_attributes = array();

/**
* constructor function
*
* @access public
*
*/
public function __construct($options = null, $style = null) {
if (!is_null($options) && (gettype($options) != "array")) {
throw new Exception("The options must be a array!!");
}
if (!empty($options) && is_array($options)) {
if (array_key_exists("style", $options)) {
if (is_array($options["style"])) {
$this->_style = array_merge($this->_style, $options["style"]);
}
unset($options["style"]);
}
$this->_attributes = array_merge($this->_attributes, $options);
}
if (!empty($style) && is_array($style)) {
$this->_style = array_merge($this->_style, $style);
}
}

/**
* set the component attributes
*
* @access protected
*
* @param $name attribute name
* @param $value attribute value, option
*
* @return AbstractComponent
*/
protected function setAttr($name, $value) {
if (array_key_exists($name, $this->_attributes)) {
unset($this->_attributes[$name]);
}
$this->_attributes[$name] = $value;
return $this;
}

/**
* get the component attributes' value
*
* @access protected
*
* @param $name attribute name
*
* @return string
*/
protected function getAttr($name) {
return array_key_exists($name, $this->_attributes) ? $this->_attributes[$name] : null;
}

/**
* set the component style
*
* @access protected
*
* @param $name style name
* @param $value style value, option
*
* @return AbstractComponent
*/
protected function setStyle($name, $value) {
if (array_key_exists($name, $this->_style)) {
unset($this->_style[$name]);
}
$this->_style[$name] = $value;
return $this;
}

/**
* get the component style's value
*
* @access protected
*
* @param $name attribute name
*
* @return string
*/
protected function getStyle($name) {
return array_key_exists($name, $this->_style) ? $this->_style[$name] : null;
}

/**
* convert the component all attributes to string like name = "value"
*
* @access protected
*
* @return string
*/
protected function attributeToString() {
//$s = array_reduce(;
$s = "";
foreach($this->_attributes as $key => $value) {
$s .= " $key=\"$value\" ";
}
return $s;
}

/**
* convert the component style to string like style = "....."
*
* @access protected
*
* @return string
*/
protected function styleToString() {
if (empty($this->_style)) return "";
$s = "";
foreach($this->_style as $key => $value) {
$s .= " $key: $value; ";
}
$s = " $s\" ";
return $s;
}

/**
* set or get the component attributes
*
* @access public
*
* @param $name attribute name
* @param $value attribute value, option
*
* @return string || AbstractComponent
*/
public function attr() {
$name = func_get_arg(0);
if (func_num_args() == 1) {
return $this->getAttr($name);
}
else if (func_num_args() == 2) {
$value = func_get_arg(1);
return $this->setAttr($name, $value);
}
}

/**
* set or get the component style
*
* @access public
*
* @param $name style name
* @param $value style value, option
*
* @return string || AbstractComponent
*/
public function style() {
$name = func_get_arg(0);
if (func_num_args() == 1) {
return $this->getStyle($name);
}
else if (func_num_args() == 2) {
$value = func_get_arg(1);
return $this->setStyle($name, $value);
}
}

/**
* return the HTML string
*
* @access public
*
* @return string
**/
public function toString() {
thorw New AbstractException("subclass must be override this method!!");
}

/**
* render the component
*
* @access public
*
* @return void
**/
public function render() {
echo $this->toString();
}
}

    
[3]PHP加速 eAccelerator配置和使用指南
    来源: 互联网  发布时间: 2013-11-30
前一段时间完成了服务器从FreeBSD4.10到6.1的升级,同时把PHP也升级到了最新的PHP5.1.4,Apache也升级到了最新的Apache2.2,为了更好的提高系统的性能考虑对PHP再进行一些优化,前两年接触过MMCache和eAccelerator,尤其对eAccelerator非常喜欢,这次优化也选择了它,下面整理一些文档和大家分享。

目录:
一、eAccelerator介绍
1、背景
2、原理
二、安装和配置
1、支持平台
2、系统要求
3、安装
4、php.ini文件配置
5、验证安装
三、使用eAccelerator开发PHP代码
1、API文档和接口说明
2、开发范例
四、附录和参考资料

一、eAccelerator介绍

1、背景
eAccelerator 是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍。

eAccelerator 项目诞生于2004年,当时它是作为 Turck MMCache 项目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov 开发,是个非常优秀的PHP内存缓存加速系统,如今仍然有很大部分 eAccelerator 的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP5.x的支持还未推出。

2、原理
eAccelerator 通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。

eAccelerator 同样还支持PHP代码的编译和解释执行,你可以通过encoder.php脚本来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安装了eAccelerator的环境下。eAccelerator编译后的代码不能被反编译,它不象其他一些编译工具那样可以进行反编译,这将使得代码更加安全和高效。

二、eAccelerator安装配置

1、支持平台
由于aAccelerator提供了大部分基于共享内存的API,所以在*nix的平台上将得到更好的支持,虽然也发布了基于windows平台的binary版本,但我在这里就只提供基于*nix平台的配置和说明,目前可以支持的平台包括Linux, FreeBSD, OpenBSD, Mac OS X, Solaris, AIX en HP-UX。

2、系统要求
php4 or php5
autoconf
automake
libtool
m4
eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的PHP

3、安装
先去eAccelerator官方下载最新版的源码包:eaccelerator-0.9.5-beta.tar.bz2

#tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export PHP_PREFIX="/usr/local" (把PHP安装目录导入到环境变量,FreeBSD默认是/usr/local)
#$PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install

4、ini文件配置
安装完成,下面开始配置php.ini文件,eAccelerator提供了两种配置和调用方式,分别如下。

安装为 Zend extension 模式:

zend_extension="/usr/local/lib/php/20050922/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

如果你使用了thread safe模式安装的PHP,你必须使用 “zend_extension_ts” 替换第一行的 “zend_extension”.

安装为 PHP extension 模式:(这是大部分采用的方式)

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

有关php.ini文件的详细配置说明,请参照源码目录的README文档或者访问官方文档:ini setting

完成安装配置后,我们最后要创建缓存目录

#mkdir /tmp/eaccelerator
#chmod 777 /tmp/eaccelerator

5、验证安装结果
通过浏览器访问您的phpinfo()页面或者运行 php -i 得到php配置信息,里面如果看到类似下面的信息就表示安装成功了。

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

我的机器上同时还安装了Zend Optimizer3.0.1,所以看到的信息如下:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
    with Zend Extension Manager v1.0.10, Copyright (c) 2003-2006, by Zend Technologies
    with Zend Optimizer v3.0.1, Copyright (c) 1998-2006, by Zend Technologies

如果你打开了eAccelerator的debug选项,可以从日志中看到类似下面的信息

#tail /var/log/httpd/eAccelerator_log
EACCELERATOR hit: "/var/www/toplee.com/blog/index.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-blog-header.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-config.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-settings.php"
EACCELERATOR hit: "/var/www/toplee.com/blog/wp-content/plugins/wp-cache/wp-cache-phase1.php"
...

以上信息表示文件都得到了缓存和命中。

至此,我们就完成了全部的安装和配置,好好享受eAccelerator带给你的惊喜吧,根据Michael的测试,效果的确相当的好。

三、在PHP中可以使用eAccelerator的API开发

1、API和文档说明:

eAccelerator提供了便捷便捷而又稳定的本机缓存实现方式,由于大部分代码实现基于共享内存,所以只能在*nix平台中使用,Windows平台Michael就暂时不知道何时有这方面的支持了。
eAccelerator提供如下的API接口和文件:(下述文件均在源码包的doc/php/目录下)

文件列表:

cache.php
dasm.php
encoder.php
info.php
loader.php
session.php
shared_memory.php

接口列表:

array eaccelerator_cached_scripts ()
void eaccelerator_cache_output (string $key, string $eval_code, [int $ttl = 0])
void eaccelerator_cache_page (string $key, [int $ttl = 0])
void eaccelerator_cache_result (string $key, string $code, [int $ttl = 0])
void eaccelerator_caching (boolean $flag)
void eaccelerator_clean ()
void eaccelerator_clear ()
array eaccelerator_dasm_file (mixed $filename)
mixed eaccelerator_encode (mixed $src, [mixed $prefix = ''], [string $pre_content = ''], [string $post_content = '']) 
void eaccelerator_gc ()
mixed eaccelerator_get (string $key) 
array eaccelerator_info ()
array eaccelerator_list_keys ()
void eaccelerator_load ()
boolean eaccelerator_lock (string $key)
void eaccelerator_optimizer (boolean $flag) 
void eaccelerator_purge ()
boolean eaccelerator_put (string $key, mixed $value, [int $ttl = 0])
array eaccelerator_removed_scripts ()
boolean eaccelerator_rm (string $key)
void eaccelerator_rm_page (string $key) 
boolean eaccelerator_set_session_handlers ()
boolean eaccelerator_unlock (string $key)

有关上述文档详细说明请参考官方文档:API Documents

下面有部分网友翻译后的接口说明:

eaccelerator_put($key, $value, $ttl=0)
  将 $value 以 $key 为键名存进缓存(php4下支持对像类型,看源码好像zend2里不支持了),$ttl 是这个缓存的生命周期,单位是秒,省略该参数或指定为 0 表示不限时,直到服务器重启清空为止。

eaccelerator_get($key)
  根据 $key 从缓存中返回相应的 eaccelerator_put() 存进去的数据,如果这项缓存已经过期或不存在那么返回值是 NULL

eaccelerator_rm($key)
  根据 $key 移除缓存

eaccelerator_gc()
  移除清理所有已过期的 key

eaccelerator_lock($key)
  为 $key 加上锁定操作,以保证多进程多线程操作时数据的同步。需要调用 eaccelerator_unlock($key) 来释放这个锁或等待程序请求结束时自动释放这个锁。
  例如:
  <?php
    eaccelerator_lock("count");
    eaccelerator_put("count",eaccelerator_get("count")+1));
  ?>

eaccelerator_unlock($key)
  根据 $key 释放锁

eaccelerator_cache_output($key, $eval_code, $ttl=0)
  将 $eval_code 代码的输出缓存 $ttl 秒,($ttl参数同 eacclerator_put)
  例如:
  <?php eaccelerator_cache_output('test', 'echo time(); phpinfo();', 30); ?>

eaccelerator_cache_result($key, $eval_code, $ttl=0)
  将 $eval_code 代码的执行结果缓存 $ttl 秒,($ttl参数同 eacclerator_put),类似 cache_output
  例如:
  <?php eaccelerator_cache_result('test', ' time() . "Hello";', 30); ?>

eaccelerator_cache_page($key, $ttl=0)
  将当前整页缓存 $ttl 秒。
  例如:
  <?php
    eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
    echo time();
    phpinfo();
  ?>

eaccelerator_rm_page($key)
  删除由  eaccelerator_cache_page() 执行的缓存,参数也是 $key

2、PHP代码中使用eAccelerator加速

下面有一个测试的代码,你可以测试一下eAccelerator强大的威力:(该代码在 cli 模式下可能无效)

<?php
class test_cache {
  var $pro = 'hello';

  function test_cache() {
    echo "Object Created!<br>\n";
  }
  function func() {
    echo ', the world!';
  }
  function now($t) {
    echo date('Y-m-d H:i:s', $t);
  }
}

$tt = eaccelerator_get("test_tt");
if (!$tt)
{
  $tt = new test_cache;
  eaccelerator_put("test_tt", $tt);
  echo "no cached!<br>\n";
}
else {
  echo "cached<br>\n";
}

echo $tt->pro;
$tt->func();
$tt->now(time() + 86400);
?>

另外,据说在著名的vBulletin 3.60Beta版里面已经集成了对eAccelerator的支持,下面是一段来自vBulletin里面的代码

代码如下:

// #############################################################################
// eAccelerator

/**
* Class for fetching and initializing the vBulletin datastore from eAccelerator
*
* @package vBulletin
* @version $Revision: 0.1 $
* @date $Date: 2005/06/12 13:14:18 $
*/
class vB_Datastore_eAccelerator extends vB_Datastore
{
/**
* Fetches the contents of the datastore from eAccelerator
*
* @param array Array of items to fetch from the datastore
*
* @return void
*/
function fetch($itemarray)
{
if (!function_exists('eaccelerator_get'))
{
trigger_error("eAccelerator not installed", E_USER_ERROR);
}

foreach ($this->defaultitems AS $item)
{
$this->do_fetch($item);
}

if (is_array($itemarray))
{
foreach ($itemarray AS $item)
{
$this->do_fetch($item);
}
}

$this->check_options();

// set the version number variable
$this->registry->versionnumber =& $this->registry->options['templateversion'];
}

/**
* Fetches the data from shared memory and detects errors
*
* @param string title of the datastore item
*
* @return void
*/
function do_fetch($title)
{
$data = eaccelerator_get($title);
if ($data === null)
{ // appears its not there, lets grab the data, lock the shared memory and put it in
$data = '';
$dataitem = $this->dbobject->query_first("
SELECT title, data FROM " . TABLE_PREFIX . "datastore
WHERE title = '" . $this->dbobject->escape_string($title) ."'
");
if (!empty($dataitem['title']))
{
$data =& $dataitem['data'];
$this->build($dataitem['title'], $dataitem['data']);
}
}
$this->register($title, $data);
}




/**
* Updates the appropriate cache file
*
* @param string title of the datastore item
*
* @return void
*/
function build($title, $data)
{
if (!function_exists('eaccelerator_put'))
{
trigger_error("eAccelerator not installed", E_USER_ERROR);
}
eaccelerator_lock($title);
eaccelerator_put($title, $data);
eaccelerator_unlock($title);
}
}

四、附录和参考资料
eAccelerator 官方网站 :http://eaccelerator.net
Websites using eAccelerator ?

http://www.advfn.com/ (2006/03/03) Advanced Financial Network, serves over 7 million page hits per day.
http://www.domaincity.co.uk/ (2005/01/29) Andrew Hutchings - Linux Guru - Just a quick message to say we are now using eaccelerator as a replacement for mmcache on 2 of our 3 node round robin clusters, 2.5million hits per day. We will be doubling this in the next few week, as well as implementing new clusters.
http://www.ets-online.de/ (2005/02/07) Denny Reeh - System Developer - The e/t/s didactic media provides an elearning server (Distance Learning System) written in PHP. We are hosting the systems for our customers mainly by ourself. So we have 5 live-servers (freebsd, apache2, php4, eaccelerator) with 5.5 million hits per month. First without eAccelerator we should have installed more servers for good performance and secondly we improve the customer convenience by quartering the medium response time of a script.
http://www.gorgoyle.com/ (2005/08/03) Gorgoyle.com is Yet Another Debian Personal Server with just a few lost Internet wanderers passing by, powered by a glorious Celeron 433 that needed some fresh air… With eAccelerator the result is quite impressive: users say the server speed is now 10000% higher (no joke!) So thank you all and keep up the good work!!! Server: eAccelerator 0.9.5 beta 1 Apache/2.0.55 (Debian) mod_python/3.1.3 Python/2.3.5 PHP/4.4.2-1 mod_ssl/2.0.55 OpenSSL/0.9.8a mod_perl/2.0.2
http://www.mafia-inc.de/ (2005/05/24) The Mafia-Incorporated is a succesfull Browser game with around 2.500.000 page impressions each day and over 5000 users. Server: PHP Version 4.3.10-9, eAccelerator 0.9.2a, Debian , Apache 2.0.53
http://www.mondespersistants.com/ (2005/01/07) An other game oriented french website with 6 000 000 pageloads monthly. http://guildes.mondespersistants.com is a full PHP5 oo development. Theses websites are running under freebsd / apache 1.3 / php 5.0.3 / eaccelerator 0.9.2
http://www.moviemaze.de/ (2005/12/09) Markus Ostertag - Movie Maze is a large german online-magazine with trailer, wallpaper, reviews, news and much more. Currently we use three servers (Suse & Debian with Apache 2, PHP4) with eAccelerator and provide more than 3TB data to ~1 Mio. users each month.
http://www.rtvslo.si (2005/01/04) The Slovenian National RTV Station and its news/misc portal with forums. Over 3500 users and more than 37000 forum messages in a year. Two round-robin servers for the masses, and an administrator server. 6 000 000 pageloads monthly.
http://www.shroomery.org/ (2006/03/28) A site about mushrooms and mycology, serving 20,000,000 pages per month. Web and database server are identical dual 64-bit Xeons with 4GB and SCSI RAID5 running Gentoo. eAccelerator help keep our page generation time under .1 second!

http://www.sourceforge.net/ (2005/04/25) SourceForge.net is the world's largest Open Source software development web site, hosting more than 100,000 projects and over 1,000,000 registered users with a centralized resource for managing projects, issues, communications, and code. SourceForge.net has the largest repository of Open Source code and applications available on the Internet, and hosts more Open Source development products than any other site or network worldwide. SourceForge.net provides a wide variety of services to projects we host, and to the Open Source community. eAccelerator is used on the webserver cluster for their frontpage.
Companies offering hosting with eAccelerator enabled ?

http://lylix.net/ (2006/04/29) Offering webhosting w/ Apache/2.0.55, PHP 5.0.5, and eAccelerator 0.9.5 beta1 on Gentoo Linux servers. Also a provider of quality Virtual Private Server (VPS) hosting, including 32 and 64-bit platforms. Most VPS images have a pre-installed LAMP environment w/ eAccelerator installed and configured.
http://www.ulyssis.org A student organisation which provides shell and internet services for students at very cheap prices.

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3