『壹』 如何實現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