FastCGI 是一个可伸缩、高速的在web server和脚本语言间通迅的接口。关于FastCGI技术的更多信息可以在官方网站和Wikipedia看到。
FastCGI 被许多脚本语言所支持,包括 php,如果用 –enable-fastcgi 选项编译的话。
多数流行的web server都支持 FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeus,nginx和lighttpd。
FastCGI 的主要优点是把动态语言和 web server 分离开来。这种技术允许 web server 和动态语言运行在不同的主机上。这可以改进可扩展性和安全性而没有大的效率损失。
php-fpm 可以和任何支持外部 FastCGI 技术的 web server 一起使用。
很不幸,官方网站 php.net 上的 php 在将 FastCGI SAPI 用于生产环境方面有许多已知的问题。
下面是关于启用 FastCGI SAPI 时的问题和 php-fpm 是如何解决他们的对比列表。
| 描述 | php自带的 | spawn-fcgi + spawn-php.sh + daemontools | php-fpm |
|---|---|---|---|
| php守护进程化: pid file, log file, setsid(), setuid(), setgid(), chroot() | (-) | (+) | (+) |
| 进程管理。可以用 “graceful” 来停止并启动 php worker 进程而不会丢失请求。能够平滑地升级配置和二进制程序而不丢失任何请求。 | php4 (-), php5 (只有 graceful) | (-) | (+) |
| 严格限制来源请求的 web server 的 ip 地址 | php4 (-) php5 (+) (从 5.2.2 开始) | (-) | (+) |
| 根据负载动态调整进程数 | (-) | (-) | Todo |
| 用不同的 uid/gid/chroot/environment 和不同的 php.ini 选项启动 worder 进程。你不需要 safe mode 了! | (-) | (-) | (+) |
| 记录 worker 进程 stdout 和 stderr 日志 | (-) | (-) | (+) |
| 如果使用优化器,在共享内存意外破坏的情况下紧急重启所有的进程 | (-) | (-) | (+) |
| 如果 set_time_limit() 失败,确保进程会结束 | (-) | (-) | (+) |
| 特色功能 Error header、优化的上传支持、fastcgi_finish_request() | |||
PHP-FPM 配置起来很简单,但有一点比较有意思的是如何确定 Worker 的数量。PHP-FPM 作者 Andrei Nigmatulin 在新闻组里提到的小技巧如下:
1) 用 Linux top 命令观察 (这个方式比较土) 2) 用 'netstat -np | grep 127.0.0.1:9000' 收集数据。 设置 php-fpm.conf 中的 max_children 的数值使 等待的数量变为最小。
目前使用 PHP-FPM 还只是通过 Patch 方式,然后编译
LINUX下的HOSTS文件配置方法与WINDOWS类似
linux下 /etc/host,主机名和IP配置文件
不同的linux版本,这个配置文件也可能不同。比如Debian的对应文件是/etc/hostname。
一般/etc/hosts 的内容一般有如下类似内容:
127.0.0.1 localhost.localdomain localhost
192.168.1.100 linmu100.com linmu100
192.168.1.120 ftpserver ftp120
一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;
当然每行也可以是两部份,即主机IP地址和主机名;比如 192.168.1.100 linmu100。
显示主机IP:
# hostname -i
192.168.1.100
有3个文件要同时编辑:文件是A.C,B.C和C.BAS,vi命令如何实现,vi中如何在这3个文件中进行切换?
vim可以在多分割窗口(multi-split-screen )环境下编辑多个文件。想了解有关详情可输入:help usr_08.txt。
要分割屏幕显示多个不同文件,在vi命令提示符后输入:
:split another-file
:vsplit another-file
如果装了screen,直接打screen,然后Ctrl a + c 为创建新窗口,Ctrl a + p为在打开的]窗口中切换!可以开很多个!足够用!
1. Use vi to open the three file directly
for example
vi a b c
2.Then vi will open the file by the order you enter in the command line.
But current is a.
If you want to change to b, you must first save a, then press “2″
,then press “Ctl+Shift+^”, for c, you must first save b, then press “3″, then press “Ctrl+Shift+^”.
vi a b c
:n跳至下一个文件,:e#回到刚才编辑的文件。
比如当前编辑文件为a,:n跳至b,再:n跳至c,:e#回到b,想回到a的话用:ea
我觉得用split 开窗口的好处,可以直接用yy在两个窗口之间复制
两个窗口可以同时是一个文件
其实可以在一个窗口下,打开3个文件的。
先 打开一个,vi 文件名
然后在vi的命令输入状态下输入
:sp 另外一个文件的路径及文件名
如此就可以在一个窗口打开3个文件了。
可以使用 ctrl + 两次按 w
在3个文件中切换
<?php
class easySmtp{
var $smtp_port;
var $time_out;
var $host_name;
var $relay_host;
var $user;
var $pass;
var $sock;
function smtp($relay_host = “”, $smtp_port = 25,$user,$pass) {
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
$this->user = $user;
$this->pass = $pass;
$this->host_name = “localhost”; //is used in HELO command
$this->sock = FALSE;
}
有时候显示的内容长度要限制一下,下面这个函数来自DZ,可以设定要截取自己指定长度的内容
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; 此处考虑到了用户操作DEL键,如果只是从数据库中取出内容显示的话,可以直接$strcut .= $string[$i]; 这样就可以了
function cutstr($string, $length) {
$strcut = ”;
if(strlen($string) > $length) {
for($i = 0; $i < $length – 3; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
return $strcut.’…’;
} else {
return $string;
}
}
$string=’12345678901234567890′;
$length=10;
echo cutstr($string, $length);
今天又有人问我PHP中文乱码问题,初学PHP总是会遇到这个问题的
其实只要了解PHP的中文乱码出现的原因就很容易解决了
主要是三层
1.数据层:也就是说数据库中的编码方式,这个可以在数据库中定义一般设为UTF-8
2.数据连接层:也就是写入和读取数据的方式,使用 mysql_query(“set names UTF8″); 此句代码定义即可
3.浏览器层:也就是在浏览器上以什么编码方式输出HTML,这个大家就都知道了使用HTML的<meta>就可以定义了
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
或都使用PHP设置 header(“Content-Type:text/html;charset=utf-8″)
三个层次的编码保持一致就不会出现中文乱码问题了
如果三个层次编码一致但还是出现了中文乱码问题,那就是你所建立的文件本身的编码有问题了,更改一下文件编码就OK了,需要注意的一点是,如果从不同的编码文件复制粘贴中文有时也会出现乱码问题,如果要复制粘贴最好先把文件转成相同编码再复制粘贴操作
<?php
$replaceStr = ‘强奸|fuck|kiss|sb|他妈的’; //要过滤词语使用|分割
$content = preg_replace(“/$replaceStr/i”,”*”,$content); //脏话过滤
echo $content;
使用 PHP的 strtr函数也可以实现过滤效果 但是比较麻烦
$string = ‘fuck 123456′;
$arr = array(‘fuck’=>’***’,’sb’=>’***’);
echo strstr($string,$arr);
一样可以实现效果 但是这样太繁琐了,也不利于以后添加过滤字符。还是用上面的正则替换的方法较好,不过这个方法用在UBB代码处理上是很不错的
例如:
<?php
//表情数组
$smilies = array(
“(A)” => ‘<img src=”images/pic/拜拜.gif” width=”50″ height=”50″ />’,
“(^)” => ‘<img src=”images/pic/好喜欢.gif” width=”50″ height=”50″ />’,
“(@)” => ‘<img src=”images/pic/你好.gif” width=”50″ height=”50″ />’,
“:S” => ‘<img src=”images/pic/玩游戏.GIF” width=”50″ height=”50″ />’,
“:|” => ‘<img src=”images/pic/嘲笑.gif” width=”50″ height=”50″ />’,
“:$” => ‘<img src=”images/pic/呼.gif” width=”50″ height=”50″ />’,
“(~)” => ‘<img src=”images/pic/欺负.gif” width=”50″ height=”50″ />’,
“({)” => ‘<img src=”images/pic/我不.gif” width=”50″ height=”50″ />’,
“:(” => ‘<img src=”images/pic/吵闹.gif” width=”50″ height=”50″ />’,
“:)” => ‘<img src=”images/pic/禁言.gif” width=”50″ height=”50″ />’,
“:P” => ‘<img src=”images/pic/什么问题.gif” width=”50″ height=”50″ />’,
“(*)” => ‘<img src=”images/pic/欣喜若狂.gif” width=”50″ height=”50″ />’,
“:D” => ‘<img src=”images/pic/赶工.gif” width=”50″ height=”50″ />’,
“;)” => ‘<img src=”images/pic/可爱吧.gif” width=”50″ height=”50″ />’,
“/skx” => ‘<img src=”images/pic/思考.gif” width=”50″ height=”50″ />’,
“/yma” => ‘<img src=”images/pic/郁闷.gif” width=”50″ height=”50″ />’,
“/gys” => ‘<img src=”images/pic/够意思.gif” width=”50″ height=”50″ />’,
“/lga” => ‘<img src=”images/pic/路过路过.GIF” width=”50″ height=”50″ />’,
“/dhl” => ‘<img src=”images/pic/太好拉.gif” width=”50″ height=”50″ />’,
“/zhl” => ‘<img src=”images/pic/祝贺.gif” width=”50″ height=”50″ />’,
“/hha” => ‘<img src=”images/pic/寒.GIF” width=”50″ height=”50″ />’,
“/mea” => ‘<img src=”images/pic/没们.gif” width=”50″ height=”50″ />’,
“/txl” => ‘<img src=”images/pic/投降了.gif” width=”50″ height=”50″ />’,
“/zla” => ‘<img src=”images/pic/自恋.GIF” width=”50″ height=”50″ />’,
);
function Smilies($text) {
global $smilies;
$text = strtr ($text, $smilies );
return $text;
}
直接调用 Smilies函数就OK了,还有什么其它要用到的UBB自己加就OK了
$cacheDir = MOOPHP_DATA_DIR.’test.log’;
MooMakeDir(dirname($cacheDir));
$cacheARR = array(‘test1′,’test2′,’test3′,’test4′);
$data= serialize($cacheARR);
MooWriteFile($cacheFile, $data);
unserialize(file_get_contents($cacheFile));

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 