基于宝塔面板的 LNMP 服务器优化

宝塔面板实在是不可多得的国产优秀服务器管理面板。支持多种 Linux 系统和 Windows,防火墙安全管理,计划任务,文件管理,多版本 PHP 共存及切换,多版本 MySQL 切换,Apache 和 Nginx 切换,一键安装和更新软件。

宝塔面板

本文基于 LNMP(Linux+Nginx+Mysql+PHP) 下运行的 National lotterys 为例简单说明服务器性能优化。

一、MySQL 优化

根据服务器配置,安装 MySQL 5.5或者 MySQL 5.7,安装后的配置的是默认的,按需修改。

打开设置中的性能调整,根据内存大小选择优化方案。

另外,可以把默认存储引擎修改为 MyISAM,配置修改

default_storage_engine = MyISAM

二、PHP 优化

建议选择PHP 7.2,打开设置中的安装扩展,安装 opcache 和 memcached,扩展安装后会自动配置。

opcache 可以大幅提升 PHP 性能,飞一般的感觉,一定要安装。实测让 等待/Waiting (TTFB) 从平均 5 秒降低到 500 毫秒内,没有静态化缓存的页面也可以秒开了。

memcached 可以根据需要安装。 继续阅读

PHP判断字符串中是否含有中文

自从有了黑帽SEO,对付SPAM(垃圾留言)一直是网站工作人员的工作内容之一。迫害我们的不是垃圾留言群发机,就是垃圾用户注册机。

判断字符串中是否含有中文是对付SPAM的方法之一,可以有效的阻止纯英文的垃圾留言,还可以用这个方法规范用户注册。看下面的代码,兼容utf-8和utf-8。

<?
$str = "测试中文";
echo $str;
echo "<hr>";
//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在utf-8情况下使用
//if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容utf-8,utf-8  //判断字符串是否全是中文
if (preg_match("/[\x7f-\xff]/", $str)) {  //判断字符串中是否有中文
echo "正确输入";
} else {
echo "错误输入";
}
?>

另附,双字节字符编码范围

1. utf-8 (utf-8/GB18030)
\x00-\xff utf-8双字节编码范围
\x20-\x7f ASCII
\xa1-\xff 中文 utf-8
\x80-\xff 中文 utf-8

2. UTF-8 (Unicode)
\u4e00-\u9fa5 (中文)
\x3130-\x318F (韩文
\xAC00-\xD7A3 (韩文)
\u0800-\u4e00 (日文)*/

在 VPS 上安装 PHP 加速器 eAccelerator

1、PHP加速器 eAccelerator 简介

eAccelerator是一个开源php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP代码执行效率能提高1-10倍。

官方主页: http://eaccelerator.net

2、在VPS上的安装和配置

以下操作在ssh中进行。先查看有没有安装make模块,大部分都安装了,没有的,先安装make模块:

yum install make

输入以下命令,逐行运行。下载 – 解压 – 切换目录 – 配置编译安装 – 切换到根目录 – 删除 – 创建缓存目录 – 修改缓存目录的权限。

wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar xjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/bin/phpize
./configure -enable-eaccelerator=shared -with-php-config=/usr/bin/php-config
make
make install
cd ..
rm -rf eaccelerator-0.9.6.1
rm eaccelerator-0.9.6.1.tar.bz2
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator

继续阅读

PHP 自定义函数实现 JavaScript escape 编码

中文字符在JSON中是无法处理的,使用的后果一定是乱码伺候,通常我们用JavaScript的escape函数对中文进行编码转换,比如cookie中的用户名。

有些情况下,为了保持程序的一致性,我们需要在PHP中对中文字符进行escape编码,而PHP本身是没有escape函数的,于是便诞生了一些PHP中的自定义函数实现escape编码。

function phpescape($str){
$sublen=strlen($str);
$reString="";
for ($i=0;$i<$sublen;$i++){
if(ord($str[$i])>=127){
$tmpString=bin2hex(iconv("utf-8","ucs-2",substr($str,$i,2)));    //此处utf-8为目标代码的编码格式,请实际情况修改
if (!eregi("WIN",PHP_OS)){
$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.="%u".$tmpString;
$i++;
} else {
$reString.="%".dechex(ord($str[$i]));
}
}
return $reString;
}

继续阅读

[转]PHP的未来 – Zeev Suraski访谈录

问:2007年九月发布的Eclipse PHP开发工具(PDT),谁在背后和做了那些工作?
Zeev: PDT 是Eclipse的项目,但Zend起了主导的作用。

问:这和Zend Studio的关系如何?

Zeev: 我们现在同时在干三件事。第一,Zend Studio,我们正在售卖此产品;第二,PDT,面向广大的开源社区;第三,扩展PDT的功能,打造成商业版…

问:这就是说,PDT不会代替Zend Studio?

Zeev:目前不会。如果发现Eclipse上所有的变化,我们会满担心的…

问: Eclipse有什么优点?

Zeev:一个主要的优点是有很多接口,该有的几乎都有了。比如AJAX的和Javascrīpt的。用户还可自我开发。另一个优点是容易贯彻标准化… 继续阅读

PHP date 函数参数详解

time() 函数在PHP中是得到一个数字,这个数字表示从1980-03-05到现在一共是多少秒,很奇怪,不过这样方便计算。

要找出前一天的时间就是 time()-60*60*24;
要找出前一年的时间就是 time()*60*60*24*365

那么如何把这个数字换成日期格式呢 ,就要用到date()函数了

$t=time();
echo date(“Y-m-d H:i:s” ,$t);

每一个参数的格式分别表示:
a – “am” 或是 “pm”
A – “AM” 或是 “PM”
d – 几日,二位数字,若不足二位则前面补零; 如: “01” 至 “31”
D – 星期几,三个英文字母; 如: “Fri”
F – 月份,英文全名; 如: “January”
h – 12 小时制的小时; 如: “01” 至 “12”
H – 24 小时制的小时; 如: “00” 至 “23”
g – 12 小时制的小时,不足二位不补零; 如: “1” 至 12″
G – 24 小时制的小时,不足二位不补零; 如: “0” 至 “23” 继续阅读

ASP PHP JSP 大比拼

目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。

简 介

ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。

PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: file://www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

JSP是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病&mdash;&mdash;脚本级执行(据说PHP4也已经在Zend的支持下,实现编译运行)。Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP&mdash;&mdash;Java Server Page。Jsp可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。 继续阅读