PHP: serialize和unserialize

serialize()和unserialize()在php手册上的解释是:
serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
serialize
(PHP 3>= 3.0.5, PHP 4 )
serialize —  产生一个可存储的值的表示
描述string serialize ( mixed value)
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。
serialize() 可处理除了 resource 之外的任何类型。
甚至可以 serialize() 那些包含了指向其自身引用的数组。
你正 serialize() 的数组/对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。
注: 在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。
上例子
$array = array();
$array[”key”] = “key”;
$array[”value”]=”value”;
echo serialize($array);
结果:a:2:{s:3:”key”;s:3:”key”;s:5:”value”;s:5:”value”;}
serialize —  产生一个可存储的值的表示 继续阅读PHP: serialize和unserialize

mysql手动复制数据库技巧

一步完成mysql数据库复制。

mysqldump esojourn --opt -u root -p | mysql esojourn -h 192.168.0.2 -u root -p

我下面对这个命令的几个部分说明一下。mysqldump wap –opt,是把名为wap的这个数据库导出到标准输出。并且使用–opt选项。 –opt 等效于–add-drop-table, –add-locks, –create-options, –quick, –extended-insert, –lock-tables, –set-charset, 和–disable-keys。这在完全导出然后完全导入数据的时候,非常有用。

小心前后别弄反。要不就悲剧大了。

fail2ban阻止vsftpd暴力攻击失败的对策

Fail2ban is failing to ban VSFTPD bruteforce:

In my case with VSFTPD, with unresolvable DNS names from /var/log/secure:

Scenario: VSFTP configuration is set for PAM authentication, using xferlog in standard format. Fail2ban for vsftpd is watching /var/log/secure

Problem: PAM sends failed login information to /var/log/secure, but the remote server’s IP address has been replaced by a DNS name. Resulting DNS name does not resolve or does not resolve correctly, thus fail2ban is unable to ban the IP address.

Fix: Configure VSFTP for “dual_log_enable=YES”, and have fail2ban watch /var/log/vsftpd.log instead. This log file shows the incoming ip address instead of the DNS name.

[ update: you also need to adde’use_localtime=YES’ to config file of VSFTPD. otherwise, above trick not working. it took me hours to solve the problem. :(]

Source and more tips.