当前位置:  编程技术>php
本页文章导读:
    ▪解析dedecms空间迁移步骤详解       1.在新空间重新安装一次原版本的DEDECMS,然后把旧站的所有数据,这里的数据指的是文件,即除了根目录下文件夹include下的配置文件config_base.php外的所有文件覆盖到新空间下 2.在旧网站后台.........
    ▪基于php缓存的详解       nginx缓存nginx有两种缓存机制:fastcgi_cache和proxy_cache下面我们来说说这两种缓存机制的区别吧proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的fastcgi_cache作用是缓.........
    ▪解析php中mysql_connect与mysql_pconncet的区别详解       说说mysql_connect与mysql_pconnect的区别,这俩函数用法上差不多,网上有说应该用pconnect的,pconnect是个 好东西;也有视pconnect如洪水猛兽的,坚决不让用pconnect的,也有态度暧昧不清的。那这个.........

[1]解析dedecms空间迁移步骤详解
    来源: 互联网  发布时间: 2013-11-30

1.在新空间重新安装一次原版本的DEDECMS,然后把旧站的所有数据,这里的数据指的是文件,即除了根目录下文件夹include下的配置文件config_base.php外的所有文件覆盖到新空间下

2.在旧网站后台系统管理-数据备份哪里备份数据,这里的数据指的是DEDECMS自己后台所采取的备份文件,类似用phpmyadmin等工具所作的备份。备份完成后,DEDECMS会将备份文件放到根目录下的dede目录(默认是dede,如果你修改了,就是你修改后的目录)下的backup_data文件夹里面,你会发现是许多文本文件。

3.在新网站打开后台(注:这里域名已经解析到新站),系统管理-数据备份-还原数据-开始还原数据,直接还原就行了。

注意:备份数据的时候指定备份数据格式那里一定要注意,一定要提前咨询新空间商,然后在决定是选择3.x/4.0.x还是选择4.1.x/5.x版本,不然备份错误,老网站又进不去,你就等着哭吧!o(∩_∩)o..

第一 : 空间和空间之间搬家

其实空间和空间之间搬家时最方便的,大家掌握好我说的步骤,100%能成功搬家,首先大家进入DEDE后台,选择系统-数据库备份-全选-然后点开始,这里要看下你的数据库对应版本要和新空间的数据库版本一样才可以,不然会出现乱码。等一会就会提示所有数据备份完毕,根据你的数据库大小时间不一定,备份完后,大家打开你网站的FTP,看一下data\backupdata目录中有txt文件,这就是我们刚才备份的数据了,如果不确定话可以看一下文件的创建日期。然后把这个backupdata文件夹连同的内容一起下载到本地,继续,把images,templets,uploads,plus这4个文件夹全部下载到本地。最后我们把新空间重新安装 DEDE程序,要对应你的版本,安装好后,把这几个文件夹覆盖到根目录,进入后台,选择系统-数据库还原-数据还原,就会看到你的数据库信息,全选后点击开始还原数据,一会就完了,然后选择你的首页文件,更新首页就OK了,这样我们的空间搬家就完成了。

第二:后台无法备份数据库怎样搬家

由于种种原因,我们的后台进不去了,或者数据库无法备份,那么我应该怎么搬家那?首先我们用PHPMYADMIN进入SQL数据库,这个应该都会把,不会的话百度一下,选择你的数据库然后备份,导出到本地,然后把你原来空间的所有文件全部下载到你的新空间中,继续打data这个文件夹当中的 common.inc.php这个文件,修改你的新空间数据库账户密码和IP,然后覆盖,这样就可以了,但是不适合菜鸟使用这种方法,除非真的没办法了,推荐第一种搬家方法,这一种方法多多少少可能有点小问题,我的网站就是昨天从空间搬到了VPS服务器,用这种方法出现了后台无法更新,不过很快解决了,是权限的问题。

做网站,域名一般变动能性不大,空间却可能转来转去。一转就要涉及网站数据的般迁。以织梦内容管理系统Dedecms搭建的网站搬起家来方法不少,但有效的也只有一两种。

由于Dedecms是用PHP编制,且需要MYSQL数据库才能撑起一个网站,WEB网页区与数据据库区一般不在同一地方,不象ASP程序编写的科汛、ZBLOG、赛特、新云等,WEB网页与ACCESS数据库是存在一起的,可以整站搬迁。

但是,使用过Wordpress博客程序的朋友,大可以明白,PHP程序编写的网页打开的速度较ASP快一点,但静态生成效果不及ASP。让人庆喜的是织梦内容管理系统Dedecms可以实现文章地址全静态化,实是难通可贵。

而且,织梦内容管理系统Dedecms做出来的网站也可以整站搬迁,方法如下:

一、登陆你的DEDECMS后台,在“系统”区找到“数据库备份/还原”,将数据库进行“备份”;

二、将老空间里所有的文件,全部下载至你的电脑本地;

三、将文件上传至新空间;

四、在新空间安装DEDECMS系统,方法——在织梦的官方网站下载一个新的安装系统,将系统里的“install”文件夹里的东西传至空间,进行覆盖。接着,运行http://你的域名/install,进行安装。需要注意的是:数据库表的前缀必须和原数据库表的前缀必须一致(按默认操作即可);

五、安装完后,登陆后台,点击“系统”区的“数据库备份/还原”,将数据进行“还原”;

六、数据生成,搬家工作完成。

当然,还有一种效防Wordpress博客搬家的方法:

一、把旧空间的文件下载到本地,通过PHPADMIN,将 MYSQL备份至本地;

二、将网站文件上传到新空间,数据库通过PHPADMIN导入了;

三、修改 dede安装时填写的数据库名和密码:打开“include”目录下的config_base.php,把这个文件下载下来

查找 “数据库连接信息”,把下面的参数(数据库名和密码)更改一下就可以了,上传覆盖。

四、搬家完毕。

至于哪种方法最好,那就仁者见仁,智者见智了。这里提醒一下,如果你网站的mysql数据库超过20M,最好采取上面第一种方法(又叫重装法),因为有些空间商的数据库导入设有大小限制(一般不能大于20M)——用重装法就可以避过这种限制。

dedeCms搬家说明-官方教程绝对有够详细

因为不同虚拟主机空间的mysql数据库名称是各不相同的(因为其前缀不一样的,用过就知道了),

所以要首先备份数据库,然后放到新空间还原,再重新生成html即可。

(注意:新空间和原站的MYSQL数据库的版本必须同样是4.1以上,或同是4.0、4.0以下,以免出现问题。查看版本可以登陆PHPMyAdmin就可看到版本是多少)

新空间重新安装同一版本的dedecms系统时,

数据库名称和数据库用户名和密码当然是填新数据库的了,

设置的数据库表的前缀必须和原数据库表的前缀一致,以免看不到内容。

具体是这样:

1.登陆后台,备份数据库(这个数据库备份文件是保存在../dede/backupdata/),并记住登陆后台的用户名和密码。

2.下载数据库备份文件(即../dede/backupdata/这个文件夹)、网站风格模板文件(即../templets/这个文件夹),还有../upimg/这个文件夹(这是保存所有上传文件的文件夹)。

3.在新空间重新安装同一版本的dedecms系统,这时设置的数据库表的前缀必须和原数据库表的前缀一致,以免看不到内容。

(数据库名称和数据库用户名和密码当然是填新数据库的了)

4.上传原站的../dede/backupdata/和../templets/和../upimg/这3个文件夹覆盖新空间中对应的文件夹,这样就把原站的数据库备份文件和网站风格模板放到新站了。

5.登陆新空间后台>系统设置>数据库管理>数据库还原,进行数据库恢复还原,然后设置网站的“修改系统参数”(或“系统变量配置”),全站重新生成html即可。

数据库恢复后,后台登陆用户名和密码要使用备份前原网站后台的登陆用户名和密码。

不同空间的mysql数据库的默认字符编码不一样,为了防止出现乱码,你备份旧的数据库的时候看清楚原先的编码(一般是latin或者是gbk的),恢复数据库的时候要看新的数据库是否支持你的编码(有的数据库不支持 gbk),如果支持选择恢复后的相同编码就不会出现乱码的问题了.


    
[2]基于php缓存的详解
    来源: 互联网  发布时间: 2013-11-30

nginx缓存
nginx有两种缓存机制:fastcgi_cache和proxy_cache
下面我们来说说这两种缓存机制的区别吧
proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的
fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容
proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽
fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力。

proxy_cache缓存设置
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path   /data0/proxy_temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path  /data0/proxy_cache_dir  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g;

server
  {
    listen       80;
    server_name  www.yourdomain.com 192.168.8.42;
    index index.html index.htm;
    root  /data0/htdocs/www; 

    location /
    {
         #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         proxy_cache cache_one;
         #对不同的HTTP状态码设置不同的缓存时间
         proxy_cache_valid  200 304 12h;
         #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
         proxy_cache_key $host$uri$is_args$args;
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://backend_server;
         expires      1d;
    }

    #用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。
    location ~ /purge(/.*)
    {
     #设置只允许指定的IP或IP段才可以清除URL缓存。
     allow            127.0.0.1;
     allow            192.168.0.0/16;
     deny            all;
     proxy_cache_purge    cache_one   $host$1$is_args$args;
    }   

    #扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
    location ~ .*\.(php|jsp|cgi)?$
    {
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://backend_server;
    }

    access_log  off;
  }
}

fastcgi_cache缓存设置
#定义缓存存放的文件夹
fastcgi_cache_path   /tt/cache  levels=1:2 keys_zone=NAME:2880m inactive=2d max_size=10G;
#定义缓存不同的url请求
fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";

server {
        listen       8080;
        server_name  www.example .com;
        location / {
            root   /www;
            index  index.html index.htm index.php;
        }

        location ~ (|.php)$ {
            root           /www;
            fastcgi_pass   127.0.0.1:9000;

            fastcgi_cache   NAME;
            fastcgi_cache_valid 200 48h;
            fastcgi_cache_min_uses  1;
            fastcgi_cache_use_stale error  timeout invalid_header http_500;

            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
            #设置缓存的过程中发现无法获取cookie,经查需要定义这句话
            fastcgi_pass_header Set-Cookie;
        }

        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for';
access_log  /httplogs/access.log  access;
}
总的来说  nginx的proxy_cache和fastcgi_cache的缓存配置差不多。
--------------------------------------------------------------------------------
memcache缓存
在讨论memcache缓存之前,我们先了解下mysql的内存缓存吧
mysql的内存缓存可以在my.cnf中指定大小:内存表和临时表不同,临时表也是存放内存中,临时表最大的内存需要通过tmp_table_size=128M设定。当数据查过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降,而内存表不会,内存满了后,会提示数据满错误。
例:
create table test
(
    id int unsigned not null auto_increment primary key
    state char(10),
    type char(20),
    date char(30)
)engine=memory default charset=utf8

内存表的特性:
1.内存表的表定义存放在磁盘上,扩展名为.frm,所以重启不会丢失
2.内存表的数据是存放在内存中,重启会丢失数据
3.内存表使用一个固定的长度格式
4.内存表不支持blob或text列,比如varchar与text字段就不会被支持
5.内存表支持auto_increment列和对可包含null值的列的索引
6.内存表不支持事物
7.内存表是表锁,当修改频繁时,性能可能会下降

下面我们来看看memcache,相对而言mysql的内存表限制较多。
memcache的用途
1.提高系统的并发能力
2.减轻数据库的负担
注:memcache linux系统32位只支持4G内存,同时memcache最长保存时间为30天。


    
[3]解析php中mysql_connect与mysql_pconncet的区别详解
    来源: 互联网  发布时间: 2013-11-30
说说mysql_connect与mysql_pconnect的区别,这俩函数用法上差不多,网上有说应该用pconnect的,pconnect是个 好东西;也有视pconnect如洪水猛兽的,坚决不让用pconnect的,也有态度暧昧不清的。那这个东西到底如何呢?

永久链接并不是说,服务器打开了一个连接,然后所有的人都共享这个链接。永久连接一样是每个客户端来就打开一个连接,有200人访问就有200个连接。其 实mysql_pconnect()本身并没有做太多的处理, 它唯一做的只是在php运行结束后不主动close掉mysql的连接.

在php经cgi方式运行时pconnect和connect是基本没有区别的, 因为cgi方式是每一个php访问起一个进程, 访问结束后进程也就结束了, 资源也全释放了. 当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的. 但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.若mysql最大连接数设为500, 而apache的最大同时访问数设为2000,假设所有访问都会要求访问db, 而且操作时间会比较长,当前500个请求的httpd都没有结束的时候,之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接 数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.

当db操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时。 在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了.

就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问db效率.

在实际的应用中,用mysql_pconnect的话,每次刷新和请求新的页面都比较快,而用mysql_connect的话,每次刷新都要重新请求,当数据库连接比较慢的时候,就能看出差异了。当你的数据库连接比较慢,DB操作不是很复杂,并且你的程序足够自信,不会产生死锁的时候,或者你拥有对服务器的控制权,满足以上四个条件中的任意两个,那就可以用pconnect。

pconnect不用在脚本里关闭,可以在mysql中设置lifetime,也可以写shell定期扫描,kill掉休眠过长的连接。 一句话总结:要用好pconnect,不仅仅是php脚本的事 还关系到数据库和服务器的设置。

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
编程技术 iis7站长之家
▪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