实现PHP执行每个静态方法前,先执行一段公共代码

最近在封装Redis的操作类,想要实现Redis::setHash()这样的调用,但是在调用这个静态方法前,要先连接Redis:$redis->connect('127.0.0.1', 6379);,本来想把这个代码写在构造方法里,但是一想不对,调用PHP的静态方法时没有实例化对象,是不走构造方法的。最终使用了__callStaticcall_user_func_array这两个函数实现。

Read More

Ubuntu下用shadowsocks和Privoxy实现终端代理

安装Shadowsocks

Debian / Ubuntu:

1
2
# apt-get install python-pip
# pip install shadowsocks

编辑文件/etc/shadowsocks.json,填写代理信息:

1
2
3
4
5
6
7
8
9
10
{
"server":"shadowsocks的IP",
"server_port":8388,
"local_address": "0.0.0.0",
"local_port":1080,
"password":"fuuuuuuuuuuuuckgfw",
"timeout":300,
"method":"rc4-md5",
"fast_open": false
}

其中local_address是本地绑定的IP。

Read More