php网站适合优化_php开发大型网站如何优化的方案详解
1.memcached3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
memcached 是一個高效的分布式的內存對象緩存系統 ,他可以支持把各種php的數據(array,對象,基本數據類型)放入到它管理的內存中.注:需通過腳本定時清除緩存,防止緩存過大影響網站性能3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
示例代碼:
conn.php
$link=mysql_connect("localhost","root",null);
mysql_select_db("bbs",$link);
mysql_query("set names utf8");
?>
memcache_getid.php
include_once 'conn.php';
$id=$_GET['id'];
$memcache = new memcache;
$memcache->connect('127.0.0.1', 11211) or die ("連接失敗");
//$memcache->flush(); 清除緩存
if($info=$memcache->get($id))
{
echo $info;
exit;
}
else
{
$result=mysql_query("select * from user where id=$id");
if($result)
{
$arr=mysql_fetch_array($result);
echo "need mysql query";
$memcache->add($id,$arr['id'],MEMCACHE_COMPRESSED,60*60*24);
}
}
?>
2.頁面靜態化技術3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
a.真靜態化3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
1.創建模板文件template.html3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
2.通過模板文件,創建靜態頁面的 php文件 xx.php3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
3. 用戶訪問生成的靜態頁面 xx.html3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
newsAction.php
header("content-type:text/html;charset=utf-8");
function replace($row,$title,$content){
//含義是 用 $title的內容替換 $row中的 %title%
$row=str_replace("%title%",$title,$row);
$row=str_replace("%content%",$content,$row);
return $row;
}
//處理添加、修改、刪除請求
//1.接收一下oper
$oper=$_REQUEST['oper'];
if($oper=="add"){
//接收title,content
$title=$_POST['title'];
$content=$_POST['content'];
//1.把數據放入到mysql, 同時創建一個html
//添加到數據庫 SqlHelper.class.php
$conn=mysql_connect("localhost","root","root");
if(!$conn){
die("連接失敗");
}
//構建html_filename
//$file=
mysql_select_db("spdb1",$conn);
$sql="insert into news (title,content) values('$title','$content')";
if(mysql_query($sql,$conn)){
//獲取剛剛插入數據的id號
$id=mysql_insert_id();
$html_filename="news_id".$id.".html";
//echo "文件名=".$html_filename;
//創建html文件
$fp_tmp=fopen("template.tpl","r");
$fp_html_file=fopen($html_filename,"w");
//思路->tmp->html 逐行讀取template.tpl文件,然后逐行替換
while(!feof($fp_tmp)){
//讀取一行.
$row=fgets($fp_tmp);
//替換(小函數)
$new_row=replace($row,$title,$content);
//把替換后的一行寫入到html文件
fwrite($fp_html_file,$new_row);
}
//關閉文件流
fclose($fp_tmp);
fclose($fp_html_file);
echo "添加到數據庫并成功創建html文件返回列表";
}
mysql_close($conn);
}
?>
show_news.php
//接受id
$id=@$_GET['id'];
//看看如何使用html靜態頁面
//思路,看看html頁面是否有,如果有,直接訪問,沒有就創建
//構建一個文件名.
$html_filename="news_id".$id.".html";
echo file_get_contents($html_filename);
//filemtime()=>獲取文件的最后修改時間
//filemtime($html_filename)+30>time() 表示靜態文件,
//if(file_exists($html_filename)&& filemtime($html_filename)+30>time()){
//
直接訪問html頁面(把html頁面的內容 echo 瀏覽器)
//echo file_get_contents($html_filename);
//exit;
//}
//
//$conn=mysql_connect("localhost","root","root");
//
//if(!$conn){
//die("連接失敗");
//}
//
//mysql_select_db("spdb1",$conn);
//
//
//$sql="select * from news where id=$id";
//$res=mysql_query($sql);
開啟ob緩存
//ob_start();
//if($row=mysql_fetch_assoc($res)){
//
//header("content-type:text/html;charset=utf-8");
//echo "
//echo "
新聞詳細內容";//echo "
{$row['title']}";//echo "
{$row['content']}";//echo "
";//}else{
//echo "沒有結果";
//}
//
//$html_content=ob_get_contents();
//$my_hader="
";把ob->$html_filename (必要時,需要考慮路徑)
//file_put_contents($html_filename,$my_hader.$html_content);
//
//mysql_free_result($res);
//mysql_close($conn);
?>
[!--empirenews.page--]
b.偽靜態化3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
環境配置:#LoadModule rewrite_module modules/mod_rewrite.so 在httpd.conf去掉改項#,并項目目錄下配置.htaccess文件3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
.htaccess
#寫你的rewrite規則
RewriteEngine On
#news-id(d+).html$ 是規則 news.php?id=$1 是轉發的頁面
#正則 子表達式 捕獲 反向引用
# "news-id33.html"
# 可以配置多個規則,匹配的順序是從上到下
RewriteRule news-id(d+).html$ news.php?id=$1
RewriteRule news-id(d+).html$ error.php
①真靜態訪問效率高,利于seo.可以減少對數據庫的操作。但是會占用大量的磁盤.3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
②偽靜態一、可以方便的實現對搜索引擎的優化,二、占空間比較小。三、通過生成不同view-id2.hmtl 可以實現內容的變化.四有效的防止了注入攻擊3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
注:但是兩者在啟用頁面緩存時(ob_start)需要注意一個問題,不要需要經常修改的html文件放入頁面緩存大網站如何優化,否則會造成頁面無法刷新得到最新結果,頁面緩存一般存放經常被查詢的html且不會被更新3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
c.mysql優化技巧3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
配置慢查詢日志:3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
在my.ini最下面配置3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
log-slow-queries = e:/wamp/logs/mysql_slow_query.log
long_query_time=2
通過 show status/variables like '%query%'' 查看是否配置成功(即slow_query_log=ON)3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
分析慢查詢日志3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
通過select sleep(4);測試3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
通過explain 慢sql語句或mysqldumpslow 慢查詢日志3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
查詢sql語句狀態3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
set profilling=on;
show profiles;
show profile for query id;
1. 使用order by null 禁用排序(默認為filesort)3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
比如 select * from dept group by ename order by null3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
2. 在精度要求高的應用中大網站如何優化,建議使用定點數(decimal)來存儲數值,以保證結果的準確性3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
3.表的水平劃分/垂直分割3KZ香格里拉注冊-香格里拉注冊登錄|網站分類目錄
總結
以上是生活随笔為你收集整理的php网站适合优化_php开发大型网站如何优化的方案详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 夏季防暑降温13个方法 防温降暑的方法?
- 下一篇: php7 mcrypt windows,