PHP之负载均衡下的session共用(Memcache实现)

转自http://www.cnblogs.com/see7di/p/3560329.html 此代码片段的功能是在做均衡负载的时候将session的维护工作交给Memcached,这样不仅性能上来了,session不同步的问题也解决了! 但是要求做Memcache的计算机内存要足够大! $_ENV=array( 'SYS'=>array( 'Memip'=>'127.0.0.1', //MEMCACHE的ip 'Mempt'=>11211, //MEMCACHE的port 'Memtim'=>10, //MEMCACHE的超时时间 ) ); //托管SESSION到MEMCACHE,如果开启失败,则说明MEMCACHE没有配置正确 final class S{ public static function open(){ //禁止session自动开启 session_write_close(); ini_set('session.auto_start',0); //使用五十分之一的概率启动GC清理会话 ini_set('session.gc_probability',1); ini_set('session.gc_divisor',50); ini_set('session.use_cookies',1); //session的寿命 //ini_set('session.gc_maxlifetime',$_ENV['SYS']['Memtim']); //ini_set('session.cookie_lifetime',$_ENV['SYS']['Memtim']); //ini_set('session.save_handler','files'); //ini_set('session.save_path',Run.'_tmp'); //ini_set('session.save_handler','memcache'); //ini_set('session.save_path','tcp://127.0.0.1:11211'); //$_ENV['S_tim'] = ini_get('session.gc_maxlifetime'); //建立memcache对象 $_ENV['S_mem']=new Memcache; $_ENV['S_mem']->connect($_ENV['SYS']['Memip'],$_ENV['SYS']['Mempt']) or die('Memcache连接失败!'); return TRUE; } /** 读取 返回:读到的内容 /**/ public static function read($id){ return $_ENV['S_mem']->get('s_'.$id); } /** 写入 返回:bool /**/ public static function write($id,$data){ return $_ENV['S_mem']->set('s_'.$id,$data,MEMCACHE_COMPRESSED,$_ENV['SYS']['Memtim']); } /** 关闭 返回:bool /**/ public static function close(){ $_ENV['S_mem']->close(); unset($_ENV['S_mem'],$_ENV['SYS']['Memtim']); return TRUE; } /** 删除 返回:bool /**/ public static function destroy($id){ return $_ENV['S_mem']->delete('s_'....

May 19, 2014 · 1 min · Me

搜索引擎优化入门

本文适合新手老手,有不对的地方欢迎指正! 如果有什么问题或者建议,请务必留言, :-) 老高很高兴与大家交流! 同时欢迎关注我的微博 写在前面:搜索引擎是个很神奇的东西,脾气捉摸不定,动不动就学个新算法让你不得安居乐业。许多新手都会觉得想让搜索引擎收录真难啊! 那么对于刚刚建成的新站和收录有问题的旧站,如何才能让搜索引擎顺利的收录你的网站呢? 花点时间看完本文,我相信你对SEO的理解一定会更加透彻。 预先约定几个说法(不分大小写) wordpress ->wp Search Engine Optimization->SEO Uniform Resource Locator ->URL 下面老高就针对wordpress的SEO优化讲讲具体的步骤: 浅谈URL的优化 说到SEO,最先想到的应该是URL了,什么!你不知道URL是啥? 8-O 简单地说,URL就是 统一资源定位符(Uniform Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。https://blog.phpgao.com/ 就是一个URL,访客和搜索引擎就是靠他找到你的资源。URL的优化其实很简单,做到以下几点就OK! 伪静态 美化你的URL显示格式,即做好伪静态,打个例子,本文的URL默认为www.phpgao.com/?p=***|的形式,\*|为文章的数字ID,但是实际上他显示为www.phpgao.com/seo.html,如果这两个URL都指向同一篇文章,哪一个更能勾起你的欲望呢?同样的,搜索引擎也会试着理解你的URL ,然后抓取你的内容,分以适当的权重 -–|- 那么如何设置成这样的形式呢?首先需要了解伪静态、404错误、linux、win主机等概念,后面章节有讲。 网站地图 URL格式确定以后下面就要把你的URL告诉搜索引擎了,所以你需要一个**网站地图**,他可以告诉搜索引擎网站是什么结构,哪些页面比较重要,哪些可以忽略,有利于搜索引擎抓取。 robots.txt robots的作用是控制爬虫的抓取范围,举个比方,你可以禁止爬虫收录你的wp-admin文件夹下所有文件,这样可以保证安全性。你需要明确的是,爬虫来到你的网站,就像吃货进了一个自助餐馆一样,只要能吃的他都不放过,如果你放任不管,那么可能他会把你和你太太盘子里的饭菜都会吃掉。所以你必须告诉他:“爬虫兄啊,你不能吃这个,这个是桌子!”。简单的介绍一下用法: 请将robots.txt放到网站的根目录下,你可以参考一下www.taobao.com/robots.txt(百度中枪) 编码无所谓,一般不会出现中文 第一行写User-agent: * 意思只针对所有搜索引擎的爬虫 紧接着Disallow: /wp-* 意思是不允许看wp-开头的所有文件 你可以写很多个Disallow规则,记得首字母要大写 你还可以在文件中指明sitemap路径 Sitemap: https://blog.phpgao.com/sitemap robots.txt不要过于复杂 robots文件真的很重要,老高之前写过一个爬网页的程序放到了某个二级目录下,并在首页加了链接,但是忘记了屏蔽搜索引擎,导致谷歌收录了本站的9000多个垃圾内容页 :-( ,悲剧啊!话说百度还是很谨慎的,就是不收录! 提交入口–来我家玩吧! 提供几个提交网站的入口,此步是通知搜索引擎来收录你的网站 百度网站登录入口 Google网站登录入口 360网站登录入口 Bing网站登录入口 搜狗网站收录提交入口这步最简单了!不要偷懒哦! 8-) 站长工具–查询收录的利器 站长工具就站长管理网站收录,转化率等信息的瑞士军刀...

May 11, 2014 · 1 min · Me

为wordpress精简head标签

一般wordpress主题都会在head标签之间使用wp_head()函数,因为这是个很重要的头部函数,很多功能插件都会用到它。 不过,如果你的wordpress主题用到了该函数,则会在head头部显示许多冗余的代码。 如果希望移除wordpress头部的多余代码,可以使用以下方法解决: 在主题文件夹下的functions.php文件中加入以下代码: remove_action( 'wp_head', 'wp_generator' );//WordPress版本信息。 remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );//最后文章的url remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );//最前文章的url remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );//上下文章的url remove_action( 'wp_head', 'feed_links_extra', 3 );//去除评论feed remove_action( 'wp_head', 'feed_links', 2 );//去除文章的feed remove_action( 'wp_head', 'rsd_link' );//针对Blog的离线编辑器开放接口所使用 remove_action( 'wp_head', 'wlwmanifest_link' );//如上 remove_action( 'wp_head', 'index_rel_link' );//当前页面的url remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );//短地址 来源: http://www.daxiawp.com/remove-wordpress-head-code.html

May 10, 2014 · 1 min · Me

WordPress首页文章不显示全文的方法

博客用的国外的主题,对中文处理不是太好。尤其是首页会把文章的全部内容都输出,使首页变得很长,对于我这种爱贴代码的程序猿来说,这个病,必须治! 解决办法有三种: more标签 自己写方法截取文字 the_excerpt() more标签 以下引用sumile_ting 的话: 这种方法是在每次写文章时在文章中插入一个More标签。 添加More标签的方法: 写文章时,在需要作为摘要的地方点击编辑器中的More标签,或在HTML编辑状态加加入<!–more–>,或者直接按Alt+Shift+T,3种方法任选其一。 这种方法使用起来太麻烦,要求每一篇文章都得手动加,一不小心可能就忘记了。还不如修改主题模板来的方便快捷。 自造方法 自己写方法必须对function.php和content.php做改写,先找到 <?php the_content(); ?> the_content()方法返回了文章的内容,处理一下就可以限制字数了,具体方法请自查。 但是对于我还是不合适,因为此时文章还没有被插件渲染,文章内的代码会被直接以纯文本的形式展示,很不和谐。 所以这个方案,pass the_excerpt() 此方法是wordpress显示文章摘要的API,效果与the_content() 一样,只是这个函数对中文支持不好,需要处理一下 以下是步骤: 方法2的the_content()修改为the_excerpt() 在function下加入以下代码 function custom_excerpt_length( $length ) { return 200; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 ); 给readmore加个链接,同样在functions.php中添加: function new_excerpt_more( $more ) { return '<a href="' . get_permalink() . '">阅读全文</a>'; } add_filter('excerpt_more', 'new_excerpt_more'); 完美解决 参考: http://sumile.blog.hexun.com/63924812_d.html http://www.gemshe.com/fashion/suneyeglass/wordpress%E7%9A%84%E6%96%87%E7%AB%A0%E5%BD%A2%E5%BC%8Fget_post_format/ http://www.seanstudio.com/archives/2558 http://www.daxiawp.com/change-to-excerpt.html

May 10, 2014 · 1 min · Me

Windows下Apache的配置文件httpd.conf

apache的配置文件一直看得我云里雾里的,今天好好把配置文件研究了一下,还是有点收获的。 看httpd.conf的内容,它主要分成3大部分: Section 1:Global Environment Section 2:‘Main’ server configuration Section 3:Virtual Hosts 以后修改配置的时候一定要注意,不要写错了地方 ...

May 10, 2014 · 4 min · Me

网站搭建手记

简单的记录一下搭建自己的博客需要做的事情! 确定主题 一个网站的主题很重要,要不然你会无从下手,所以千万不要像我这样开一个这么无聊的blog。为什么说此步骤最难,就是因为点子是最重要的,只要主题(目标)明确,那么建立(实现)它就是易如反掌了。 选域名 域名是什么?其实就是一个网站的艺名而已。人家的网站叫“234.156.78.90”,你的叫“ccav.com”,那么你说那个更容易出名呢?所以,好的域名可能让你的网站迅速火起来。举个小栗子,以前的京东商城的域名是360buy.com,不懂英语的人当然不好记了,现在改名jd.com,既好记又提升了企业形象,何乐而不为呢?(估计这个域名京东花了不少钱)。不建议大家购买com以外的域名,尤其是cn结尾的,至于为什么大家可以自己研究。域名选好了后,就购买空间了。 虚拟主机(网站空间) 光是有了像phpgao.com这样的域名是不够的,因为你需要把你的文章放到互联网上供大家访问,所以你需要一个专用服务器,当然自己搭建服务器也是可以的,但是如果是个规模不大的网站老高建议还是租用吧,我的空间就是淘宝上买的,28半年,香港主机,速度还行。(为什么是香港空间?免备案呗!) 域名与空间的绑定 GOOD!既然你已经有了域名和空间,是时候将它们相互关联了。这一步比较关键!为了让大家更好的理解这一节。老高来举个大栗子,某一天老高要孤身一人拜访位从未谋面的远房亲戚,远程通话后确定目的地,坐飞机2小时(想的好美啊),下飞机后找那个举着牌子的人,我才能顺利见到那位亲戚。也就是说,我从出发到坐飞机,到达后根据牌子辨认身份这一系列的动作如果有一个失误,我的此次出行就是失败的,之后我只能沮丧的回家了。。。反应到现实就是:和我通话的那个人就是域名,他告诉我他在哪个IP等我,等我通过IP到站后,找那个举着牌子的人,这样就完成了一次“见面”。简单的说空间有个IP,你的域名必须解析到那个IP才行,当然不要忘了空间需要和你的域名绑定。 最后的工作 如果域名没有备案的话,那么你的空间应该和我一样不在内地吧。不过不要紧,能访问就行。想要搭建WP这类博客,你的空间还需要一个不是太小的MYSQL空间,也就是传说中的数据库。我的空间是200M+200M型,也就是说我的空间能放小于200M的MP3文件并且在数据库能够存放200M的数据。其实这么点空间建一个站已经很富裕了。(注:国外的空间不是很稳定,一定要定期备份!)

May 10, 2014 · 1 min · Me

IIS下wordpress伪静态的配置

IIS服务器下伪静态的配置需要参照Apache.htaccess文件。 首先要使IIS支持URL Rewrite,所以必须让服务器加载ISAPI_Rewrite! 什么是ISAPI_Rewrite? ISAPI 翻译为:英特网服务器应用编程接口。 最常用的用途是URL Rewrite,辅助动态网站(主要为PHP脚本的程序)实现伪静态功能。 IIS支持ISAPI后就剩下两个步骤了: 1.建立一个httpd.ini文件,文件内容如下: [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] RewriteRule /sitemap_baidu.xml /sitemap_baidu.xml [L] RewriteRule /sitemap.html /sitemap.html [L] RewriteRule /archivers/(.*) /archivers/$1 [L] # For file-based wordpress content (i.e. theme), admin, etc. RewriteRule /wp-(....

May 10, 2014 · 1 min · Me

网页跳转方法集合

有些网站经常要用到跳转,比如商务通啊,支付宝啊,下面是我总结的几种方法,包括HTML,JS,PHP PHP的header() <?php //重定向浏览器 header("Location: http://www.phpgao.com"); //确保重定向后,后续代码不会被执行 exit();//or die; ?> Meta标签 </head> <body> 页面只停留一秒…… </body> </html> JS的location.href //注:此方法容易被拦截</span>** <script> url='http://www.phpgao.com'; window.open(url,'_self'); //更改'_self' 就可以实现跳转限制原窗口还是父窗口,子窗口或者新窗口 </script>

May 10, 2014 · 1 min · Me

让使用Apache的网站速度更快

Apache 2.0在性能上的改善最吸引人.在支持POSIX线程的Unix系统上,Apache可以通过不同的MPM运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能.相比于Apache 1.3,2.0版本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效.但是在编译和运行时刻,2.0也有许多可以显著提高性能的选择. MPM(Multi -Processing Modules,多道处理模块) MPM是Apache2.0中影响性能的最核心特性. 毫不夸张地说,MPM的引入是Apache 2.0最重要的变化.大家知道,Apache是基于模块化的设计,而Apache 2.0更扩展了模块化设计到Web服务器的最基本功能.服务器装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求.扩展模块化设计有两个重要好处: apache可以更简洁、有效地支持多种操作系统; 务器可以按站点的特殊需要进行自定制. 在用户级,MPM看起来和其它Apache模块非常类似.主要区别是在任意时刻只能有一种MPM被装载到服务器中. 下面以Linux RedHat AS3为平台,演示一下在Apache 2.0中如何指定MPM. # wget http://archive.apache.org/dist/httpd/httpd-2.0.52.tar.bz2 # tar jxvf httpd-2.0.52.tar.bz2 # cd httpd-2.0.52 # ./configure ——help|grep mpm 显示如下: ——with-mpm=MPM Choose the process model for Apache to use. MPM={beos|worker|prefork|mpmt\_os2| perchild|leader|threadpool} 上述操作用来选择要使用的进程模型,即哪种MPM模块.Beos、mpmt_os2分别是BeOS和OS/2上缺省的MPM, perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程.这在运行多个需要CGI的虚拟主机时特别有用,会比1.3版中的SuExec 机制做得更好.leader和threadpool都是基于worker的变体,还处于实验性阶段,某些情况下并不会按照预期设想的那样工作,所以 Apache官方也并不推荐使用.因此,我们主要阐述prefork和worker这两种和性能关系最大的产品级MPM. prefork的工作原理 如果不用“——with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所采用的预派生子进程方式也是 Apache 1.3中采用的模式.prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一. prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足 MinSpareServers设置的值为止.这就是预派生(prefork)的由来.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能. worker的工作原理 相对于prefork,worker是2.0 版中全新的支持多线程和多进程混合模型的MPM.由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器.但是, worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性.这种MPM的工作方式将是Apache 2.0的发展趋势. worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild 线程数,各个线程独立地处理请求.同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数.如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程. 下面我以worker模式进行编译安装 # ./configure --prefix=/usr/local/apache --with-mpm=worker --enable-so # #注释(让它支持DSO功能,这样以后可以动态加载模块) # make # make install # cd /usr/local/apache/conf # vi httpd....

April 20, 2014 · 1 min · Me

CSS十条速记口诀

如果在用CSS设计布局时遇到BUG,请认真阅读以下内容,非常容易记忆的,不知道哪位高人把CSS BUG编成了顺口溜了!看看好不好记住呢? IE边框若显若无,须注意,定是高度设置已忘记 浮动产生有缘故,若要父层包含住,紧跟浮动要清除,容器自然显其中 三像素文本慢移不必慌,高度设置帮你忙 兼容各个浏览须注意,默认设置行高可能是杀手 独立清除浮动须铭记,行高设无,高设零,设计效果兼浏览 学布局须思路,路随布局原理自然直,轻松驾驭html,流水布局少hack,代码清爽,兼容好,友好引擎喜欢迎。 所有标签皆有源,只是默认各不同,span是无极,无极生两仪—内联和块级,img较特殊,但也遵法理,其他只是改造各不同,一个*号全归原,层叠样式理须多练习,万物皆规律。 图片链接排版须小心,图片链接文字链接若对齐,padding和vertical-align:middle要设定,虽差微细倒无妨。 IE浮动双边距,请用display:inline拘。 列表横向排版,列表代码须紧靠,空隙自消须铭记。 (转自php100)

April 10, 2014 · 1 min · Me