浪驰短信是一家短信应用的提供商,提供了一些WEB调用的接口,为了让短信能够加到队列里,我用PHP重新实现了一遍(其实是因为他们没有提供WEB查看的页面,否则还真不需要实现)
注意事项:浪驰的接口必须要在同一个进程里发送和接收短信。否则会失败的。为此我写了三次接口类
第一次采用了snoopy,因为他们建议使用POST发送数据,所以我偷懒就用了snoopy,但只能获取得activeId,却无法进行下一步操作
第二次我直接采用file_get_contents,我没有用Stream流来POST数据,而是用了GET方式(GET方式也支持的),但于第一次一样,只能获取activeId,无法进行下一步操作。
然后我用浏览器打开相应的地址一步步的查看,发现他有一个cookie是每次种入的,于是怀疑他的ActiveID还需要配合cookie才行。于是尝试直接Setcookie,然后再发送。但发现手工种的cookie好象不行。于是
第三次,我用curl,并指定cookie文件,最后终于成功了。感谢curl,可以支持带COOKIE的数据发送。
代码不贴了,涉及公司的代码。再者,纯粹的代码也不能用。。因为我还用mysql实现了一个简单的队列,以及成功记录,错误记录。。。
好象听说目前不能接受回复了。真郁闷。。。
这是昨天看到的一篇文章,看完后,我针对服务器等做了一下测试,确实有影响。毕竟open_basedir在每一次require,include以及判断文件等的时候,都要先判断是否在可执行目录内。所以。。。性能就会下降(如果是用框架的,可能性能会更差一点),如果是自己的机器,一般也可以通过设定文件目录权限,来防止这种情况发生【linux可以指定用户、用户组。windows可以设定目录的所有者(当时在win下我就最烦这个,因为需要为每个虚拟主机添加一个用户,再指定权限,然后再到目录上设定用户)】
下面就是我看到的文章的内容:
今天在做项目的时候发现 没几行语句 竟然耗费了0.04秒
十分让我吃惊.随后进行跟踪 得知就在I/O读写的时候最费时间 一个is_file竟然费了0.003秒
后来让我百思不得其解 Google也没有任何答案.
然后我又把项目放到另外一个电脑上 发现速度直线上升 从以前的0.04秒变成了0.007秒左右.
我很纳闷 难道我的本本就这么差劲不应该啊
经过我的比较 我发现了 在我机器上的这个项目的虚拟主机中 设置了open_basedir.
大家都知道 这个对于虚拟主机来说是必不可少的..
但是后来我又进行测试一遍 难道真的是这样吗
我的测试代码非常简单:
PHP代码
- $time = microtime(true);
- is_file('1.html');
- echo microtime(true) - $time;
我的弄了一个空的1.html文件 这个文件是在当前目录绝对存在的.
我新建了一个虚拟主机 然后设置了一下open_basedir.
得到的结果是0.0018570423126221左右
然后我进apache的配置文件 把open_basedir删除以后
得到的结果是5.0067901611328E-5 这个结果小到PHP中的小数点都不能表示了
(注:以上结果都是多次运行缓存后的结果 因为is_file的结果会被缓存的)
现在我终于明白了 为啥虚拟主机那些探针中 I/O的性能都那么小的原因了..
杯具啊..
--EOF--
原文来自http://www.skiyo.cn/article/Skiyo-243-1263890301.html,各位也可以测试一下。。
关于xss的攻击与防范,我在08年09年写过一些文章,有自己记录的,也有摘抄的。昨天我又看到一篇讲攻击的文章,记录一下,也可以与以前进行一下对 比。
本文是写给那些不拿XSS当Web应用严重漏洞的人看的。 实际上,人们可以利用XSS漏洞大捞一笔。本文是在热爱黑客技术 但从不攻击他人的网站上发表的,所以我不会对这里介绍的知识的使用方式负任何责任。
» 阅读全文
我们来讨论包含文件漏洞,首先要问的是,什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包 含的这个文件来源过滤不严,从而可去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。几乎所有的 cgi程序都有这样的 bug,只是具体的表现方式不一样罢了。
» 阅读全文
我在写sbConfigure类的时候,还是采用了以前的Configure的解析方法,即get方法可以以字符串的形式来读取数组变量,就象这样
PHP代码
- sbConfigure::get("a.b.c");
Return:
PHP代码
- return self::$_config['a']['b']['c'];
但事实上,我为了这个返回,写了五六次代码了,但最终还是采用了foreach的方法
第一次我这么处理(采用了Eval),
PHP代码
-
- $arrkeys = "[a][b][c]"
- eval("\$ret = self::\$_config$arrkeys;");
- return $ret;
后来,yhustc说这样不太安全,所以我改成了foeach的方式
PHP代码
-
- $arr = self::$_config;
- $_err = false;
- foreach($names as $name){
- if(isset($arr[$name])){
- $arr = $arr[$name];
- }else{
- $_err = true;
- break;
- }
- }
- if($_err == true)return ;
- return $arr;
$_err这个变量是为了防止变量在没有设定的时候仍然返回值。。。
昨天我又想用eval,但还是失败了。。。
不知道有没有更好的转换方式,查看了parse_ini_file,因为我想,ini文件中有
XML/HTML代码
- [test]
- a.b=1
- a.c=2
有这样的返回数组。所以我在想着参考。然而仍然失望 ,又想着pack?serialize?json_decode?之类的解决方式,但还是失败了。。郁闷啊。
先记录一下,如果有更好的方法,就再次更新