Submitted by gouki on 2011, December 21, 11:59 PM
大约在半年前,hightman给了个array2xml的代码(以前在liba的时候自己写过,但代码不见了),改了一下,支持了attributes,而且在支持Attributes时候,也支持字符串了。
黑黑:

输出就更方便了,直接:
die(xmlapi::generateEmptyXml(xmlapi::array2xml($rssdata)));
爽。
Tags: rss, hightman, liba
PHP | 评论:0
| 阅读:16230
Submitted by gouki on 2011, December 20, 12:13 PM
事实上,看到这篇文章的时候,我早就已经解决这个问题了。目前我也是这么做的,只是我是设置phpQuery::$documents = null而已,和他不太一样。
但本文做了一点分析,所以我还是正常的贴一下吧。
phpQuery是一个用php实现的类似jQuery的开源项目,可以在服务器端以jQuery的语法形式解析网页元素。 相对于正则或其它方式匹配网页方式,phpQuery使用起来要方便的多。
在使用phpQuery采集网页时,遇到一个问题:在处理大量网页之后,phpQuery占用的内存数量非常惊人(很快就超过了1G),
比如这段代码:
phpQuery::newDocumentFile($htmlFile); |
echo memory_get_usage() . "\n"; |
谨慎运行上面这段代码,它会很快用光你的内存。
经过查看phpQuery的源代码终于发现了问题所在,phpQuery在每处理一个网页就会产生一个DOMDocumentWrapper 对象,而每个DOMDocumentWrapper 对象会被保存在静态成员$documents中(phpQuery::createDocumentWrapper中),这个变量是一个数组,每解析一个 网页数组元素就增加一个。
phpQuery::$documents[$wrapper->id] = $wrapper;
找到问题后,解决就很容易了,每次解析完一个网页,把phpQuery::$documents置空即可。
phpQuery::newDocumentFile($htmlFile); |
phpQuery::$documents = array(); |
echo memory_get_usage() . "\n"; |
内存占用稳定了。
----
原文来自:http://www.linuxsong.org/2011/01/phpquery-memory-leak/
其实出现上面的问题很正常,大多数人在用pq的时候都是在不停的抓取和采集,一般在命令行下面,这时候都不会想到释放内存,而平时网页的话,一个页面结束后,这些内存都还是会自动释放掉一点。如果不是狠狠抓数据的人,是不会遇到这种问题的啦。
Tags: phpquery, 内存
PHP | 评论:1
| 阅读:23909
Submitted by gouki on 2011, December 20, 12:02 PM
这个标题我扔到PHP分类下当然是有原因的。。
因为我最近在尝试用phpQuery来分析数据,但这些数据最终的样式都和我真正想要的还是有点区别,所以我要去除其中的样式,还要删除空标签,但:empty标签删除的太厉害了。不太敢用
所以我还是用正则来删除一级的标签。
除了空标签还有这些带样式的,我开始是用pq("xxx")->css("");来设置空标签,但总觉得不爽,因为这样会生成<p style="">这种多余的内容。
找了一点资料,其实jQuery的removeAttr就可以有这个功能啦。于是乎,pq("xxx")->removeAttr("style"),就解决了
做个笔记
Tags: phpquery, jquery
PHP | 评论:0
| 阅读:18795
Submitted by gouki on 2011, December 18, 11:24 PM
HTTP/1.1 200 OK Date: Wed, 05 Nov 2003 10:46:04 GMT Server: Apache/1.3.28 (Unix) PHP/4.2.3 Content-Location: CSS2-REC.en.html Vary: negotiate,accept-language,accept-charset TCN: choice P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml Cache-Control: max-age=21600 Expires: Wed, 05 Nov 2003 16:46:04 GMT Last-Modified: Tue, 12 May 1998 22:18:49 GMT ETag: "3558cac9;36f99e2b" Accept-Ranges: bytes Content-Length: 10734 Connection: close Content-Type: text/html; charset=utf-8 Content-Language: en
这是一个资料备份,常见的head头部
PHP | 评论:0
| 阅读:13999
Submitted by gouki on 2011, December 17, 10:45 PM
firephp,第一次知道的时候,是在fleaphp的框架里,那时候,妖怪在里面引入了firephp的支持。
BTW:妖怪还第一次在国内的开源框架中引入了yaml的配置。果然妖。。
本文是YII官方的wiki文章,来自于:http://www.yiiframework.com/wiki/84/integrating-firephp/
-
Install Firebug plugin for Firefox from here.
-
Install FirePHP plugin for Firefox from here.
-
Download FirePHP package from here.
-
Extract 'FirePHPCoreXXX/lib/FirePHPCore' compressed folder to '/path/to/protected/components/FirePHPCore' folder.
-
At /path/to/index.php, after the line
PHP代码
- $app = Yii::createWebApplication($config);
- if (YII_DEBUG){
- Yii::import("application.components.FirePHPCore.fb", true);
- }
- $app->run();
That's it! Now you can display your variables on FirePHP with a simple 'fb' command inside your PHP code:
To view the results, open Firebug at 'console' tab and run your PHP file.
---------
不过我还没有仔细研究过,这个功能和Yii自带的WEBlog中的firebug支持有什么区别,还没有过多的研究,不发表意见。
------
看了一下源码,黑黑,突然发现,原来还可以这样玩console,嗯,又多了一个调试功能(和本文说的yii支持firephp无关)
Tags: firephp, firefox, firebug, fleaphp, yaml
PHP | 评论:1
| 阅读:18116