http://blog.developers.api.sina.com.cn/?p=264
最近MemcacheDB邮件列表和研发部那边同事报告PHP的memcache客户端php-memcache经常出 现断连接的问题:
PHP Notice: Memcache::get(): Server ………. (tcp 11211) failed with: Failed reading line from stream (0) with pecl-memcache 3.*
….
这个问题由来已久,我们的解释是MemcacheDB的延迟受磁盘写入影响 (checkpoint时, memtrickle时)会有一点的浮动。虽然整体延迟不是很高,但是 相比于Memcached纯内存稍高。而PHP memcache宏观上认为是cache行为,会对延 迟稍高的连接扔掉(其认为延迟高就失去cache的意义)。
解决办法是使用andreiz的php-memcached:
http://pecl.php.net/package/memcached
http://github.com/andreiz/php-memcached/tree/master
php-memcached是brian的libmemcached库的php wrapper. libmemcached是一个 前途光明的memcache协议c/c++客户端库,未来对二进制版本的支持,另外极有可能包括MemcacheDB的扩展命令rget等的支持(已经联系好作者提交patch)
我对php-memcache和php-memcached两个客户端作了简单的评估。分别set 1000 万条200字节的value,其中ph ......
集成配置
在配置Eclipse之前,首先需要一个Apache+PHP的基础环境,
可以装wampp或php home,它们都是集成化安装,比较方便,下载地址如下:
wampp2.2
php home
建议装wampp2.2,集成Apache,MySQL,Perl,PHP。而且解压缩就可用,我就用它挺方便的。
下面我就以安装wampp2.2为例,一步一步的讲解一下,如何去配置基于Eclipse的PHP开发环境。
一、安装配置wampp2.2
•配置wampp
在这个例子里,我们把下载下来的wampp-2.2.zip,解压到 c:\wampp2 下,同志们可以按照我所写的来举一反三。
解压后的目录结构应该如下图所示:
wampp包含了下面的内容:
+ Apache 2.0.46
+ MySQL 4.0.13
+ PHP 4.3.2 + PEAR
+ Perl 5.8.0
+ mod_php 4.3.2
+ mod_perl 1.99_10 dev
+ mod_ssl 2.0.46
+ mod_auth_mysql (only experimental)
+ openssl 0.9.7b
而且已经都配置好了,需要咱们修改的内容不多,
第一个应该改一下Apache的DocumentRoot,这是Web服务的根目录,
这里咱把它设置为F:\workspace,等会儿Eclipse的工 ......
setcookie("cookiename","cookievalue",time()+3600,"/path",".php100.com",1);
cookiename:
是cookie的名字,可以通过cookiename调用此cookie,$_COOKIE["cookiename"];
cookievalue:
是cookie的初始值;
time():
返回UNIX时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
所以,time()+3600 是设置cookie1个小时后失效;time()-1 立即失效,当前时间的前一秒。
/path:
cookie在服务器端的有效路径,向下兼容,(eg:/path=>在整个path目录及其子目录下均有效,/path/foo=>在foo及其子目录下有效)
.php100.com:
设置保存域,泛解析,表示此cookie在.php100.com子域名下全部有效(eg:bbs.php100.com,news.php100.com)。
secure:
表示此cookie是否在https连接中传送。1:true;0:false;
......
mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。
不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。
mb_convert_encoding的用法见官方:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
做一个GBK To UTF-8
< ?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK");
?>
再来个GB2312 To Big5
< ?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
?>
不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。
下面还有一些详细的例子:
iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_ ......
函数原型:mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int &count]);
needle:要被替换的字符串,new_needle:替换用的字符串,haystack:操作字符串,count:替换次数【可选参数】
我们重点试验前三个在使用数组是的执行方式:
在都不使用数组时,该函数直接使用new_needle替换所有的needle并返回替换后的字符串。如:str_replace("m","n","my name is jim!")返回ny nane is jin!
1、只对needle使用数组。
示例:str_replace(array('m','i'),'n',"my name is jim!");返回:ny nane ns jnn!
可以看出,函数顺序性的对数组中每个字符串进行替换,并返回替换后的字符串。
2、只对new_needle使用数组。
示例:str_replace('m',array('n','z'),"my name is jim!\n")返回:Arrayy naArraye is jiArray!
该替换比较有意思,如果只对第二个参数使用 ......
php config
1.安装Apache2.2
2.安装php5.2(注意选择所有的库文件)
3.将phpMyAdmin解压,拷贝至Apache2.2\htdocs\phpmyadmin(该路径可以自由改变)下。
4.修改配置文件:
1)修改php.ini
具体操作:
extension_dir = "C:\Program Files\PHP\ext" (536)
extension=php_mysql.dll (640)
2)修改httpd.conf
具体操作:
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll" (127)
(240)
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
(385)
AddType application/x-httpd-php .php
DirectoryIndex index.htm
DirectoryIndex index.php
3)配置phpMyAdmin
从\phpmyadmin\libraries中拷贝一个config.default.php,将其拷至\phpmyadmin目录下,并重命名为:config.inc.php
修改config.inc.php:
$cfg['Servers'][$i]['host'] = 'localho ......