好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php静态化调用 php静态方法的优缺点

很多站长朋友们都不太清楚php静态化调用,今天小编就来给大家整理php静态化调用,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php静态化页面方法,伪静态的也可以 2、 ThinkPHP3.2 的页面静态化功能的实现 3、 php 静态化 php静态化页面方法,伪静态的也可以

PHP伪静态写法--其一

伪静态又名:URL重写

主要是为了SEO而生的。(SEO是什么?这个不用问我吧。呵呵~搞网络的不懂SEO那就~~~~)

方法一:

比如这个网页

/soft.php/1,100,8630.html

其实处理的脚本是soft.php 参数为1,100,8630

相当于soft.php?a=1b=1=100c=8630 只不过这样的URL太难记。搜索引擎也不喜欢。

真静态只是完全生成了HTML。

客户端访问的时候直接输出。不用脚本解释。在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果。也就是说服务器端实实在在的存在这个HTML页面。

当然在你网站的流量没有那么大的时候。URL重写是最好的方法(个人观点,大流量的时候可以考虑负载均衡了。同样没有关系)

附URL重写的方法有很多种,APACHE,IISREWRITE。甚至PHP脚本都可以直接处理。比如上例中就是PHP脚本直接处理(该方法好处是大流量的时候直接减轻WEB伺服器的压力。PS:同样也是个人观点:

================================================

下面以程序为例讲一下PHP伪静态的程序实现方法,其实这方法我之前已经有在其它论坛社区发过

程序为例:

/soft.php/1,100,8630.html

CODE:

//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分

if(@$path_info =$_SERVER["PATH_INFO"]){

//正则匹配一下参数

if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){

$gid =intval($arr_path[1]); //取得值 1

$sid =intval($arr_path[2]); //取得值100

$softid =intval($arr_path[3]); //取得值8630

}else die("Path:Error!");

//相当于soft.php?gid=1sid=100softid=8630

//就是这么简单了。~)

方法二:

一 打开 Apache 的配置文件 httpd.conf 。

二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉

三 在 httpd.conf中添加:

<IfModule mod_rewrite.c>

RewriteEngine On

#RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html

RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+).html 1.php?__is_apache_rewrite=1__rewrite_arg=2

</IfModule>

四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfModule mod_rewrite.c>和</IfModule>之间添加:

RewriteMap tolowercase int:tolower

RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)=d+ [NC]

RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING}}__is_apache_rewrite=1

五 保存httpd.conf并重启Apache

方法三:

<?php

/*

功能:PHP伪静态化页面的实现

具体用法:

例如链接为:test.php/year/2006/action/_add.html

mod_rewrite();

$yearn=$_GET["year"];//结果为'2006'

$action=$_GET["action"];//结果为'_add'

*/

function mod_rewrite(){

global $_GET;

$nav=$_SERVER["REQUEST_URI"];

$script_name=$_SERVER["SCRIPT_NAME"];

$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);

$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm

$vars = explode("/",$nav);

for($i=0;$i<Count($vars);$i+=2){

$_GET["$vars[$i]"]=$vars[$i+1];

}

return $_GET;

}

mod_rewrite();

$yearn=$_GET["year"];//结果为'2006'

$action=$_GET["action"];//结果为'_add'

echo $yearn;

echo $action;

?>

<?php

/*

功能:PHP伪静态化页面的实现

具体用法:

例如链接为:test.php/year/2006/action/_add.html

mod_rewrite();

$yearn=$_GET["year"];//结果为'2006'

$action=$_GET["action"];//结果为'_add'

*/

function mod_rewrite(){

global $_GET;

$nav=$_SERVER["REQUEST_URI"];

$script_name=$_SERVER["SCRIPT_NAME"];

$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);

$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm

$vars = explode("/",$nav);

for($i=0;$i<Count($vars);$i+=2){

$_GET["$vars[$i]"]=$vars[$i+1];

}

return $_GET;

}

mod_rewrite();

$yearn=$_GET["year"];//结果为'2006'

$action=$_GET["action"];//结果为'_add'

echo $yearn;

echo $action;

?>

ThinkPHP3.2 的页面静态化功能的实现

(1)在根目录下的程序入口文件index.php中加下面这行:

define('HTML_PATH','./HTML/');//生成静态页面的文件位置  (nginx服务器报错时注释此行,默认地址为runtime目录平层的Html)

(2)在项目的配置文件config.php中进行如下配置:

'HTML_CACHE_ON'=>true,// 开启静态缓存

'HTML_CACHE_TIME'=>604800,// 全局静态缓存有效期(秒)(3600*24*7)

'HTML_FILE_SUFFIX'=>'.shtml',// 设置静态缓存文件后缀

'HTML_CACHE_RULES'=>array(// 定义静态缓存规则

// 定义格式1 数组方式

// 定义格式2 字符串方式

//后一个参数是静态缓存有效期,单位为秒。如果不定义,则会获取配置参数HTML_CACHE_TIME 的设置值,如果定义为0则表示永久缓存。

//{id} 表示取$_GET['id']

'CondVoucher:conGuid' =>array('{:controller}_{:action}/conGuid'),

(3)访问url生成缓存到html目录下查看缓存文件

参照手册:

php 静态化

只能将php文件执行的结果赋给一个变量,,然后将变量里的值写入.html文件

但如果是php和html混合编码,,就有一定问题

可以如下解决,,下面这个是test.php文件

<?php

ob_start();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title><?php echo 'hello my god';?></title>

</head>

<body>

<?php echo "内容页";?>

</body>

</html>

<?php

$cacheStr=ob_get_contents();

$handle=fopen("123.html","w");

fwrite($handle, $cacheStr);

ob_clean();

?>

关于php静态化调用的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php静态化调用 php静态方法的优缺点的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did210231
更新时间:2023-05-03   阅读:26次

上一篇: 取代php-fpm 取代反应的定义

下一篇:php把字符替换 php字符替换函数

相关资讯

最新资料更新

  • 1.php版本越高越好吗 php各版本性能对比
  • 2.php匹配尖括号 括号匹配python代码
  • 3.php暂停方法 php 停止执行
  • 4.php仿应用商店 php android 应用
  • 5.redis缓存类php php redis页面缓存
  • 6.php在线运行测试 php 测试工具
  • 7.包含苏州软世通php的词条
  • 8.php保存用户信息 php登录成功保存session
  • 9.php降低curl版本 php怎么升级版本
  • 10.qbapi.php的简单介绍
  • 11.php网页打印控件谷歌 php打印插件
  • 12.PHP没有前景吗 php现在怎么样
  • 13.php绘制健康码 php源码怎么搭建网站
  • 14.php配置外网访问 phpstudy外网映射
  • 15.php类属性分类 php数据类型
  • 16.phphint插件下载 php 插件系统
  • 17.数组对象转为数组php 对象数组转string
  • 18.php翻译sdk php翻译成中文是什么意思
  • 19.JavaPHP你好 java welcome
  • 20.php函数补全 php自动补全

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]