IP地址在mysql的存储(IP地址和int的转换)

文章作者:Enjoy 转载请注明原文链接。

PHP
echo ip2long(‘192.168.1.38’);
输出:3232235814

MYSQL
SELECT INET_ATON(‘192.168.1.38’);
输出:3232235814

两个函数返回的结果是一样的,都是A*256*256*256+B*256*256+C*256+D的算法
192*256*256*256+168*256*256+1*256+38 = 3 232 235 814

反过来,从int转换为IP地址分别是php的long2ip()和mysql的INET_NTOA()。

mysql存储这个值是字段需要用int UNSIGNED。不用UNSIGNED的话,128以上的IP段就存储不了了。

传统的方法,创建varchar(15),需要占用15个字节,而改时使用int只需要4字节,可以省一些字节。

php存入时:$ip = ip2long($ip);
mysql取出时:SELECT INET_ATON(ip) FROM table …
php取出时,多一步:$ip = long2ip($ip);

转换以前的数据:

1.把以前的varchar()数据转换为int型的SQL语句:
UPDATE `hx_table` SET ip =  INET_ATON(ip) WHERE INET_ATON(ip) is NOT NULL
2.把字段更改为int型:
ALTER TABLE `hx_table` CHANGE `ip` `ip` INT UNSIGNED NOT NULL
3.程序做相应修改上传,完成。

@@UPDATE@@20110310:

在32位的机子上,echo ip2long(‘192.168.1.38’);由于超过32位的最大数,导致输出负数-1062731482。

有两种方法更新为正数:
$ip_long = bindec(decbin(ip2long($ip)));

$ip_long = = sprintf(“%u”, ip2long($ip));
因此一种是修改PHP程序,使其肯定存入正数。
另一种是将mysql的这个字段使用int,非UNSIGNED,使其可以存入负数。

优化WordPress,解决加载慢,等待google引用地址超时问题

近几个月发现空间经常很慢,特别是WordPress响应非常迟钝,但一直懒得动它。 前几天实在受不了,正巧看到一个特价的vps,就用paypal支付了$,买了一个. 搞好了系统,配置好环境,就在准备迁移WordPress数据的时候,偶然看到一个文章,说近来几个月很多人的WordPress都是变的很慢。 查了查相关文章,跟google被墙有关,原因是wp的字体加载的都是 在google托管的,还有些js,css脚本等等,比如:

<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,600&subset=latin,latin-ext' rel='stylesheet'>

<script src="http://html5shim.googlecode.com/svn/trunk/html5.js">

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=3.4.2'></script>

这样 googleapis.com,googlecode.com 无法联通,自然相关引用的字体,脚本也都无法加载,只有等待主机超时, 所以WordPress都变的很慢。 知道问题所在就处理它。

 [ 只解决最影响加载速度的字体就可以了 ]

1。不使用google字体

编辑主题的 functions.php文件,在末尾添加以下代码:
//禁用Open Sans
class Disable_Google_Fonts {
public function __construct() {
add_filter( ‘gettext_with_context’, array( $this, ‘disable_open_sans’             ), 888, 4 );
}
public function disable_open_sans( $translations, $text, $context, $domain ) {
if ( ‘Open Sans font: on or off’ == $context && ‘on’ == $text ) {
$translations = ‘off’;
}
return $translations;
}
}
$disable_google_fonts = new Disable_Google_Fonts;

这里提供了由360网站卫士CDN驱动的常用前端公共库以及和谐使用Google公共库&字体库的调用方法

下面的方法2,3是使用 – 360网站卫士常用前端公共库CDN服务 替换 google的对应引用地址。

2。手动修改替换引用地址

打开wordpress文件: wp-includes/script-loader.php

搜: fonts.googleapis.com

替换:fonts.googleapis.com替换为 fonts.useso.com ,保存文件,发现问题解决了。

原理就是用360来加速google字体。

速度很好,360的加速很快。

3。使用插件

如何通过第三方Wordpress字体转换插件继续使用Google字体库? (感谢来自淘宝的soulteary童鞋开发了这个插件) 插件说明地址:http://www.soulteary.com/2014/06/08/replace-google-fonts.html 插件下载地址:http://www.soulteary.com/wp-content/uploads/2014/06/Replace-Google-Fonts.zip

—- P.S. 这样暂时就不用站点迁移了. 差点误会了服务商.

email2ascii — 将EMail地址转换为Ascii

今天看到一个很好的隐藏页面邮件地址的例子:

通过将电子邮件地址转码为Ascii编码,在页面完成一种简单的电子邮件地址保护,减少你收到垃圾邮件的概率。

 

HTML:
<a href="mailto:&#100;&#105;&#115;&#116;&#114;&#111;&#64;&#100;&#105;&#115;&#116;&#114;&#111;&#119;&#97;&#116;&#99;&#104;&#46;&#99;&#111;&#109;">Ladislav Bodnar</a>

鼠标移动到连接, 页面状态栏显示的是:

mailto:distro@distrowatch.com

 

完整代码,请查看:  EMail 地址转 Ascii — 将EMail地址转换为Ascii

http://bohu.net/t/email2ascii.php

 

PHP:

<?php
	$result=array();
	for($i=0,$l=mb_strlen($email,'utf-8');$i<$l;++$i){
			$result[]="&amp;#".uniord(mb_substr($email,$i,1,'utf-8'));
	}
	echo "<pre>".join(";",$result).";</pre>";
?>

JavaScript:

<script type="text/javascript">
	var s = "<?php echo $email;?>";
	var as = "";
	for(var a = 0; a<s.length; a++){
			 as += "&amp;#"+s.charCodeAt(a)+";";
	 }
	document.write("<pre>"+as+"</pre>");
</script>

 

完整PHP代码:

email2ascii.txt — 右键另存下载

 

C#、PHP、Python 运算符的优先级

C#、PHP、Python 运算符的优先级

C#  运算符优先级

优先级
类别
运算符
1
基本
(x) x.y f(x) a[x] x++ x――new typeof sizeof checked unchecked
2
单目
+ - ! ~ ++x ――x (T)x
3
乘法与除法
* / %
4
加法与减法
+ -
5
移位运算
<< >>
6
关系运算
< > < = >=
7
条件等
= = ! =
8
位逻辑与
&
9
位逻辑异或
^
10
位逻辑或
|
11
条件与
&&
12
条件或
13
条件
?:
14
赋值
= *= /= %= += -= <<= >>= &= ^= |=

 

上表源自:  http://baike.baidu.com/view/262524.htm#4

C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。             ==, !=, &lt;, &gt;, &lt;=, &gt;=, binary +, binary -, ^, &amp;,’ xml:space=”preserve”>整型运算包括 ==、!=、<、>、<=、>=、binary +、binary -、^、& |~, ++, –, and sizeof() are generally allowed on enumerations.’ xml:space=”preserve”>、~、++、– 和 sizeof(),通常在枚举时允许这些运算。  overloaded by the user, thus changing their meaning when applied to a user-defined type.’ xml:space=”preserve”>此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。

下表列出了按发型版本不同的 C# 运算符:

 

PHP运算符优先级

 

 
结合方向 运算符 附加信息
非结合 clone new clone 和 new
[ array()
非结合 ++ -- 递增/递减运算符
非结合 ~ - (int) (float) (string) (array) (object) (bool) @ 类型
非结合 instanceof 类型
右结合 ! 逻辑操作符
* / % 算术运算符
+ - . 算术运算符 和 字符串运算符
<< >> 位运算符
非结合 < <= > >= <> 比较运算符
非结合 == != === !== 比较运算符
& 位运算符 和 引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

 

 

Python 运算符优先级

 

这个表给出Python的运算符优先级(从低到高).

从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。

这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部的运算符。

 
运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换

 

上两表源自:  http://tool.oschina.net/commons?type=6#php_

 

选择 PHP Debugger 调试器

选择哪个 PHP 调试器?

[转载请注明出处:http://bohu.net/blog/?p=8854]

PHP 并没有内部调试器。但是可以使用外部调试器。» Zend    IDE 就是其中之一,它包含一个调试器。

也有一些免费的调试器,比如在     » http://www.php-debugger.com/dbg/ 上的 DBG,» Advanced    PHP Debugger(APD,注:似乎已经停止更新)或者 » Xdebug

Zend Studio

优点:支持全php版本,集成度高,兼容性好。
缺点:程序庞大,需付费的软件。

使用Zend Technologies开发的 Zend Studio ,因为它是专业开发人员PHP整个开发周期中唯一的集成开发环境 (Integrated Development Environment,IDE),它包括了PHP所有必须的开发部件。通过一整套编辑、调试、分析、优化和数据库工具,Zend Studio 加速开发周期,并简化复杂的应用方案。

它支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。也支持HTML和js标签,但只对PHP语言提供调试支持。

因为是同一个公司的产品,所以它对的Zend Framework方面的支持比其他软件好。

Zend Studio5.5系列后,官方推出利用了Eclipse平台,基于PDT的Zend Studio for Eclipse 6.0,之后的版本也都构建于Eclipse。

Zend Studio是屡获大奖的专业 PHP 集成开发环境,具备功能强大的专业编辑工具和调试工具,
Zend Studio可以在Linux、Windows、Mac OS X上运行。 最大遗憾是Zend的产品是付费的。

Xdebug

优点:支持php4.3 – 5.5版本,支持zend引擎,免费。
缺点:Xdebug 不能和 Zend Optimizer或任何其他处理 PHP 的内组件 (DBG、 APD、 ioncube 等) 的扩展。这是因为这些模块有兼容性问题。

推荐安装扩展插件 XDEBUG EXTENSION FOR PHP   –  文档:http://xdebug.org/docs/all

Windows下安装预编译的  模块,有几个预编译的模块,用于 Windows,他们是所有的非调试版本的 PHP。你可以得到那些在下载页。按照这些说明来安装 Xdebug。

安装可以在其网站使用web向导模式,帮助你安装: http://xdebug.org/wizard.php

一下是按照方法:

1. 在cmd下,php -i >> c:\\phpinfo.txt

信息保存在 ,然后拷贝phpinfo.txt中内容至http://xdebug.org/wizard.php的文本框内,

然后点击 ‘Analyse my phpinfo() output’ 按钮,将会分析你的phpinfo,然后显示出分析的php配置,以及你要在php.ini中添加的内容:

你对应下载所提示的dll文件,放在第2步所对应的你的php安装目录中,第3步在php.in中添加一行:zend_extension = "C:\Program Files\iis express\PHP\v5.3\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll"

然后查看phpinfo() 或者cmd php -i 检查是否已经加载了xdebug

phpdbg

优点:PHP官方推介的。从 PHP5.6 phpdbg 将以SAPI 模块包含在 PHP内,实现交互式调试器。
缺点:必须版本 > PHP 5.4.0 以及最新版本。易用性暂不明确。

PHP官方网站里显示:

PHP 5.6.0 alpha 最后终版附带了一个交互式调试器名为phpdbg。
phpdbg 项目页面: http://phpdbg.com/

Phpdbg 以 SAPI 模块实现的而不会影响代码的性能或功能可以 excert 完全控制环境。

phpdbg 的目标是一个轻量、 功能强大、 易于使用的调试平台,自 PHP5.4 +

功能

  • Stepthrough 调试
  • 类方法、 函数、 File:Line、 地址操作码) 的灵活断点
  • 方便地访问到 PHP 的内置 eval()
  • 方便地访问到当前正在执行的代码
  • 用户态的 API
  • SAPI 不可知论-轻松地集成
  • PHP 配置文件支持
  • JIT 超级全局变量-设置您自己!!
  • 可选 readline 支持-终端操作舒适
  • 远程调试支持-捆绑 Java GUI
  • 容易操作-请参阅帮助:)

详细文档查看: http://phpdbg.com/docs

Phpdbg 还有一个远程调试时所使用的Java GUI客户端程序:

希望PHP 5.6发布后看看Phpdbg的功效如何!