‘壹’ 如何实现php片段缓存
因为数据库用的是PostgreSQL,并发承受非常弱,于是采取了大量缓存策略。已经实现的有:在模型层基类利用memcache缓存PDO获取的关联数组,下次访问就直接从memcached读取,直到数据更新(也由该模型类承担)时候更新的方法摧毁缓存。对于页面级别缓存,自己写了一些实现,主要利用php的文件操作函数将页面存为静态,下次读取到缓存的时候就终止控制器执行action,直接返回缓存结果。部署在ubuntu 10.10、nginx+fastcgi(php-fpm)+php5.3+apc+memcached、pgsql 9上用Apache ab压力测试,结果第二种方法从硬盘获取缓存的居然比第一种从内存获取缓存的要好,分析原因应该是因为第二种终止了控制器动作。看来Zend Framework的开销真的很大。因为有独立服务器不用寄居学校虚拟主机,所以计划继续删减Zend……现在新的问题来了,在网站中更常用的应该是页面片段缓存,可是真的从未听说什么PHP页面片段缓存的方案。谷歌了一下,都是说Yii Framework的片段缓存的。现在我想自己实现片段缓存,可是很没有思路。以上第二种方法在片段缓存问题上行不通,因为内容没有输出完全不能终止控制器执行(比较笨,我用在整页缓存中是命中缓存后exit()暴力退出的)。而不终止控制器第二种方案基本就没有性能优势。而且因为视图引擎是Blitz,没有自带缓存方案,自定义片段缓存不能依赖视图层。之前.net了一年,现在换届了想和团队往开源方向走,可是PHP的一些具体解决方案实在了解甚少。不知大家可否提供一些思路呢?谢谢大家啦~
‘贰’ 怎么在inux中PHP中apc模块安装
操作步骤:
1、下载安装
wget pecl.php.net/get/APC-3.1.8.tgz
tar -zxvf APC-3.1.8.tgz cd APC-3.1.8
/usr/local/php/bin/phpize
./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/php/bin/php-config
make
sudo make install
2、在/usr/local/php/etc/php.ini 加入
extension = "apc.so" ;
;APC setting
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = on
重启apache 或者 /usr/local/php/sbin/php-fpm restart
‘叁’ 如何在ubuntu中让apache和php支持mysql
Ubuntu建立(apache+php+mysql)+phpmyadmin
Ubuntu建立apache+php+mysql
基本的支持环境。暂时还不应用zend优化,因此这里就不涉及到zend optimizer的安装了。其实在ubuntu系统中中安装远比在windows系统中设置更为容易,而且在终端下设置更省事。
1、安装Apache服务
sudo apt-get install apache2
然后按照提示即完成apahce的安装了。这里 可以打开
http://127.0.0.1
,即可看于是It works
2、安装php5
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
OK之后,我们来查看一下是否生效了。
gksudo gedit /var/www/testphp.php
入探针
保存运行
http://127.0.0.1/testphp.php
3、安装mysql
sudo apt-get install mysql-server
安装完成按提示设置root密
4、让apache、php支持mysql
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo /etc/init.d/apache2 restart
至此apache2+php 5.2.4.2+mysql5.0.51的环境就完成了。
========================================================
Ubuntu建立(apache+php+mysql)+phpmyadmin
自从成功从硬盘安装Ubuntu 8.04.1后,一直想在ubuntu 8.04.1环境下搭建WEB服务器,LAMP(Liunx+Apache+MySQL+PHP)+phpmyadmin理所当然就成为我的首眩最终我在 Ubuntu中文Wiki找到了安装配置LAMP WEB服务器最详细和全面的方法:
一.安装
1.安装LAMP
在新立得软件包管理器中选择 编辑--使用任务分组标记软件包
在打开的窗口中 勾选 LAMP SERVER 然后确定。
在主窗口中 点击绿色的对号 应用 按钮
好了 。接下来就是等待…等待新立得 自动下载安装完。
中间会有一次提示输入mysql的root用户的密码
您还可以在终端模式下,通过命令行安装:
sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin
2.安装phpmyadmin
终端中运行命令
sudo apt-get install phpmyadmin
二.配置
1> apache 的配置文件路径 /etc/apache2/apache2.conf
2> php.ini 路径 /etc/php5/apache2/php5.ini
3> mysql配置文件 路径 /etc/mysql/my.cnf
4> phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf
5> 网站根目录 /var/www
1.配置apache
终端中 使用命令
sudo gedit /etc/apache2/apache2.conf
在配置文件最后面加入下面几行:
添加文件类型支持
AddType application/x-httpd-php .php .htm .html
默认字符集 根据自己需要
AddDefaultCharset UTF-8
服务器地址
ServerName 127.0.0.1
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)
DirectoryIndex index.htm index.html index.php
2.配置PHP5
这个没什么好说的 根据个人自己需要
下面是默认时区
;default.timezone=去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)
default.timezone= PRC
3.配置mysql
sudo gedit /etc/mysql/my.cnf
这里有一个地方要注意
因为默认是只允许本地访问数据库的 如果你有需要 可以打开。
bind-address 127.0.0.1这一句是限制只能本地访问mysql的。如果有需要其他机器访问 把这句话用#注释掉
#bind-address 127.0.0.1
4.配置phpmyadmin
phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin
你可以把phpmyadmin复制过去 或者 网上有人说你可以创建一个链接 然后把链接复制过去(没有试过)
然后 终端中运行命令
sudo gedit /etc/phpmyadmin/apache.conf
然后把下面两句的路径 改为/var/www/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin
改为:
Alias /phpmyadmin /var/www/phpmyadmin
符:常用命令
1.重启apache
sudo /etc/init.d/apache2 restart
2.重启mysql
sudo /etc/init.d/mysql restart
至此 LAMP环境配置成功,试一下 echo phpinfo(); 吧!
LAMP并没有那么神秘!除去下载的时间,整个配置过程决不会花费您五分钟。
GD库的安装
sudo apt-get install php5-gd
记得装完重启apache
sudo /etc/init.d/apache2 restart
启用 mod_rewrite 模块
sudo a2enmod rewrite
‘肆’ Linux系统下PHP-FPM的安装和配置教程
基本安装方法
安装工具包
$
sudo
apt-get
install
python-software-properties
添加ppa源
$
sudo
add-apt-repository
ppa:yola/php5
安装php5-fpm
sudo
apt-get
update
sudo
apt-get
install
php5-fpm
其它必要的软件安装接
sudo
apt-get
install
nginx
配置php-fpm
php-fpm的解析器是C/S结构,它的配置文件位于:
(1)/etc/php5/fpm/php-fpm.conf
(2)/etc/php5/fpm/pool.d/
一般没什么严格的配置的要求,或者说这块我还没有具体的研究每个配置参数的意义
我采用了tcp模式与fastcgi进程进行连接,因此我修改了tcp监听的地址和端口,修改了一下监视目录的名称,这里不做具体详细解释了,大家可以参考官方文档根据自己的需求进行配置
重启php5-fpm
安装提示错误解决
如果服务器的系统源中没有php5-fpm,安装的时候会提示:
Reading
state
information...
Done
E:
Couldn't
find
package
php5-fpm
解决办法
1.
添加非官方的源到
/etc/apt/sources.list
echo
"deb
http://ppa.launchpad.net/brianmercer/php/ubuntu
lucid
main"
>>
/etc/apt/sources.list
echo
"deb-src
http://ppa.launchpad.net/brianmercer/php/ubuntu
lucid
main"
>>
/etc/apt/sources.list
2.
安装php5-fpm
sudo
apt-get
update
&&
sudo
apt-get
install
php5-fpm
3.
安装php扩展组件
sudo
apt-get
install
php-apc
php5-curl
php5-gd
php5-imagick
php5-mysql\
php5-memcache
php5-memcached
php5-mcrypt
4.
启动php-fpm
sudo
/etc/init.d/php5-fpm
start
php.in位于/etc/php5/fpm/php.ini
php-fpm.ini位于/etc/php5/fpm/php5-fpm.conf
php-fpm启动时报错
PHP
Warning:
PHP
Startup:
Unable
to
load
dynamic
library
'/usr/lib/php5/20060613+lfs/gd.so'
-
/usr/lib/php5/20060613+lfs/gd.so:
undefined
symbol:
gdImageCreateFromJpeg
in
Unknown
on
line
0
locate
libgd
查看gd的动态库位置,如果/usr/local/lib/目录里有则
rm
/usr/local/lib/libgd*
重启php-fpm即可
去掉php-fpm启动时警告提示信息
PHP
Deprecated:
Comments
starting
with
'#'
are
deprecated
in
/etc/php5/fpm/conf.d/imagick.ini
on
line
1
in
Unknown
on
line
0
把#变成;即可去掉该提示
‘伍’ 如何在ubuntu上安装php
关于Ubuntu下的LAMP配置步骤:
首先要安装LAMP 就是Apache,PHP5,Mysql5.
打开终端,输入命令行。
1.安装 Apache
1.打开终端
2. 输入以下命令
sudo apt-get install apache2
3. 如果没有sudo 权限,需要输入密码。
2.测试 Apache
为了确定安装是否成功,我们来测试一下。
1. 打开浏览器,输入以下网址
http://localhost/
如果成功,你会看到以下内容 "It works!" , 祝贺你,第一步,你算是跨出去了。
3.安装 PHP5
Step 1. 打开终端 (ctrl+alt+T).
Step 2. 输入以下命令行:
sudo apt-get install php5 libapache2-mod-php5
Step 3.为了使PHP和Apache能一起工作,我们需要配置一下PHP并且测试一下。
sudo /etc/init.d/apache2 restart
4.测试 PHP
Step 1.我们先建一个PHP 测试文件(我们叫它phptest.php),输入以下内容 :
sudo gedit /var/www/testphp.php
Step 2.这时我们会打开一个文本编辑器,在里面输入以下内容.
<?php phpinfo(); ?>
Step 3.保存退出。
Step 4. 现在打开浏览器,查看一下我们刚刚建立的内容。输入以下网址。
http://localhost/testphp.php
如果显示出PHP的信息内容页面,说明你又成功了一小步。
5.安装 MySQL
下面我们来安装Mysql5 (这是最后一步,也是麻烦比较多的一步,安装的时候注意。)
Step 1. 再一次地打开终端,输入以下内容。
sudo apt-get install mysql-server
Step 2.在安装的时候,如果要求你输入Mysql 密码,则输入密码。如果没有要求,则执行下一步。在终端中输入下面命令。
mysql -u root
后来,你还要输入以下内容;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
以上的'root'是你的Mysql 用户名,'yourpassword'是你的新密码。
Step 3.下面我们将去处理更为棘手的phpmyadmin这里经常出现的问题就是明明安装了phpmyadmin但却在输入http://localhost/phpmyadmin的时候,没有出现管理界面,反而出现没有找到的页面。不急,我们先安装再了phpmyadmin然后再去解决。 输入以下命令:
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
这里的phpmyadmin是与我们之前装的php5 是相配合的,如果你装的PHP 和phpmyadmin不相配,它们不会工作。
Step 4.现在我们去解决phpmyadmin“不工作”的问题,当我们安装了phpmyadmin 后,不要以为一切就绪了。其实我们还有一项工作要去完成,就是去配置phpmyadmin和apache2。同样的终端,输入:
cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin
这样我们就把phpmyadmin中的apache.conf(apache配置文件)复制到apache2/sites-available下的phpmyadmin文件下。
Step 5.接着输入,进入sites-enabled文件夹下:
cd /etc/apache2/sites-enabled/
Step 6.进入之后,我们要建立一个通往配置文件的链接以便能利用它。输入:
sudo ln -s ../sites-available/phpmyadmin
Step 7.重启apache2
sudo /etc/init.d/apache2 restart
最后,打开http://localhost/phpmyadmin 去体验一下
‘陆’ 如何解决ubuntu的apache2无法解析PHP的问题
你代码打错了吧,第一行的?应该在<之后,也就是应该这样:
<?php
phpinfo();
?>
‘柒’ php apc的配置在什么位置
一、APC缓存简介
APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。
系统缓存
它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存
3600s(一小时)。但是这样仍会浪费大量CPU时间。因此可以在php.ini中设置system缓存为永不过期(apc.ttl=0)。不过如果这样设置,改运php代码后需要重启WEB服务器。目前使用较多的是指此类缓存。
用户数据缓存
缓存由用户在编写PHP代码时用apc_store和apc_fetch函数操作读取、写入的。如果数据量不大的话,可以一试。如果数据量大,使用类似memcache此类的更加专着的内存缓存方案会更好
缓存key生成规则
APC的缓存中的每个slot都会有一个key,key是
apc_cache_key_t结构体类型,除了key相关的属性,关键是h字段的生成。 h字段决定了此元素落于slots数组的哪一个位置。对于用户缓存和系统缓存,其生成规则不同。 用户缓存通过apc_cache_make_user_key函数生成key。通过用户传递进来的key字符串,依赖PHP内核中的hash函数(PHP的hashtable所使用的hash函数:zend_inline_hash_func),生成h值。
系统缓存通过apc_cache_make_file_key函数生成key。通过APC的配置项apc.stat的开关来区别对待不同的方案。在打开的情况下,即
apc.stat= On 时,如果被更新则自动重新编译和缓存编译
‘捌’ 如何制作一个定制的 PHP 基础 Docker 镜像
选择 Ubuntu 官方的 14.04 版本为我们依赖的系统镜像。
dockerfile
FROM ubuntu:trusty
因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。如果使用 DaoCloud 的镜像源,则指向:FROM cloud.io/ubuntu:trusty
设置镜像的维护者,相当于镜像的作者或发行方。
dockerfile
MAINTAINER Captain Dao <[email protected]>
用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。
dockerfile
RUN apt-get update \
&& apt-get -y install \
curl \
wget \
apache2 \
libapache2-mod-php5 \
php5-mysql \
php5-sqlite \
php5-gd \
php5-curl \
php-pear \
php-apc \
用 RUN 命令调用 Linux 命令对 Apache 服务和 PHP 参数进行配置。
dockerfile
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \
用 RUN 命令调用 mkdir 来准备一个干净的放置代码的目录。
dockerfile
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html
将本地的代码添加到目录,并指定其为当前的工作目录。
dockerfile
COPY . /app
WORKDIR /app
设置启动脚本的权限,指定暴露的容器内端口地址。
最后指定容器启动的进程。
dockerfile
RUN chmod 755 ./start.sh
EXPOSE 80
CMD ["./start.sh"]
至此一个 PHP 的基础镜像制作完毕,你可以在本地运行 docker build -t my-php-base . 来构建出这个镜像并命名为 my-php-base 。
由于网络环境的特殊情况,在本地运行 docker build 的时间会很长,并且有可能失败。推荐使用 DaoCloud 加速器 和 DaoCloud 的云端 代码构建 功能。
完整 Dockerfile
``` dockerfile
Ubuntu 14.04,Trusty Tahr(可靠的塔尔羊)发行版
FROM ubuntu:trusty
道客船长荣誉出品
MAINTAINER Captain Dao < [email protected] >
APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加
RUN apt-get update \
&& apt-get -y install \
curl \
wget \
apache2 \
libapache2-mod-php5 \
php5-mysql \
php5-sqlite \
php5-gd \
php5-curl \
php-pear \
php-apc \
# 用完包管理器后安排打扫卫生可以显着的减少镜像大小
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
# 安装 Composer,此物是 PHP 用来管理依赖关系的工具
# Laravel Symfony 等时髦的框架会依赖它
&& curl -sS https://getcomposer.org/installer \
| php -- --install-dir=/usr/local/bin --filename=composer
Apache 2 配置文件:/etc/apache2/apache2.conf
给 Apache 2 设置一个默认服务名,避免启动时给个提示让人紧张.
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \
# PHP 配置文件:/etc/php5/apache2/php.ini
# 调整 PHP 处理 Request 里变量提交值的顺序,解析顺序从左到右,后解析新值覆盖旧值
# 默认设定为 EGPCS(ENV/GET/POST/COOKIE/SERVER)
&& sed -i 's/variables_order.*/variables_order = "EGPCS"/g' \
/etc/php5/apache2/php.ini
配置默认放置 App 的目录
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html
COPY . /app
WORKDIR /app
RUN chmod 755 ./start.sh
EXPOSE 80
CMD ["./start.sh"]
```
‘玖’ ubuntu .php文件的问题 怎么打开.php的文件啊 求解释
一是把php文件存放在WEB目录下,浏览器输入地址可以调用。
二是在命令行可以调用php打开*.php文件,例如:
$ /home/php/php abc.php
‘拾’ 如何在ubuntu下升级php版本
1. 清除旧版本
# Remove Ubuntu PHP Packagessudo apt-get remove php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-geoip php5-imagick php5-intl php5-mcrypt php5-mysql php5-xdebug php5-xsl # Remove PECL Packagessudo pecl uninstall apcsudo pecl uninstall geoipsudo pecl uninstall xdebug
2. 获取 PHP 指定版本
# Get PHP 5.4.17 Source
wget http://museum.php.net/php5/php-5.4.17.tar.bz2
tar jxf php-5.4.17.tar.bz2
cd php-5.4.17/
3. 编译
# Configure PHP Source
# Note: Use `php-config` utility to determine your existing PHP configure options.
./configure
# Install PHPmakemake testsudo make install
4. 使用 peci
sudo pecl install ssh2 channel://pecl.php.net/ssh2-0.12
5. 在 php.ini 中加入
add the "extension=ssh2.so" to the extension part of php.ini
6. 重启 apache