服务器提交协议冲突的解决办法

作者:小文 发布于:2010-9-21 13:46 Tuesday 分类:常见问题

第一种情况: 服务器提交协议冲突 Section=ResponseStatusLines

解决办法: Excep100Continue 选项去掉

第二种情况: 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF

解决办法: useUnsafeHeaderParsing200 选中

评论(0) 引用(0) 浏览(5607)

采集引起的服务器w3wp.exe占用CPU100%

作者:小文 发布于:2010-9-17 16:15 Friday 分类:常见问题

有用户提问:

用火车采集文章分别发到三个网站。这三个网站在同一台服务器上。不采集的时候服务器一切正常。但是一运行采集器,服务器的w3wp.exe进程就100%。症状是ping 服务器的IP一切正常,但是所有的网站都打不开了。


这个问题主要是服务器负载能力太小,应注意对服务器进行优化.同时用火车采集器发布时将发布速度调整慢一些.比如单线程发布,发布时间间隔更长一些,如几秒钟.多个任务不要同时向一台服务器上发送.

评论(8) 引用(0) 浏览(5414)

PHP采网址(列表页处理)插件的开发方法

作者:小文 发布于:2010-9-15 11:12 Wednesday 分类:软件培训

火车采集器中列表页插件是用来处理采网址时采集的网页源代码的.插件可以对源代码进行处理,然后采集器从处理过的代码中分析网址或是采集数据和网址.

点击查看原图

今天我们以采集 http://news.hexun.com/ 的网址为例,比如我们只采集包含有当天日期的网址,比如今天是 2010-09-15,那么只有网址中有这个日期代码的才可以被我们采集到.

我们的处理思路就是用插件提取所有符合条件的网址,然后生成链接地址,那么,最后采集器采集到的网址就是符合条件的网址了.

点击查看原图

具体请看插件代码

<?php
/*
*火车采集器外部编程接口处理标签内容示范文件   
*该文件内自动系统的三个参数$LabelArray $LabelCookie,$LabelUrl
*对任意采集的标签都适用请对标签内容处理后直接将该数组serialize($LabelArray)输出,
*采集器内部即可接收到该标签的内容,对比以前的接口规则,新规则可以实现标签之间的数据调用和处理                                                       
*参数说明:                                                                                                                                           
  *$LabelArray    -  标签名及标签内容集合 结构如:Array('栏目id' => 2,'出处'=>  'www.locoy.com','作者'=>'火车采集器','内容'=>'<center><b>暴笑短信')  ##
  *$LabelCookie   -  对应采集中用到的Cookie值   
  *$LabelUrl      -  当前采集的页面的Url地址
  * 特别注意:如果是处理列表页,默认页,多页时会有以下两个标签
    $LabelArray['Html']       网页的源代码,没有经过采集器处理的,直接下载后的数据.修改这里的数据,请将新值赋予$LabelArray['Html']
    $LabelArray['PageType']   值可能为 List, Pages, Content 分别代表处理列表页,多页,默认页
* @Copyright  Copyright (c) 2005-2010 http://www.locoy.com       
* @Version    LocoySpider 2010 or later               
* @Licence    Support On LocoySpider Standard and Enterprise Edition   
*以上语句建议不更改,以下为用户操作区域  该区域只限对数组值进行操作,不得有打印输出产生,不得直接增加或删除相应标签名
*/
if($LabelArray['Html'])
{
    if($LabelArray['PageType']=='List')
    {
        $urlArr=array();
        $html=$LabelArray['Html'];
        $today=date("Y-m-d",time());
        preg_match_all("/href=\"([^\"]*?\.html)\"/",$html,$mcs);
        //var_dump($mcs);
        if(count($mcs)>0)
        {
            foreach($mcs[1] as $url)
            {
                if(strpos($url,$today)>0) $urlArr[]=$url;
            }
            $LabelArray['Html']='<a href="'.implode('"><a href="',$urlArr).'">';
        }
    }
}
//#############以上为用户操作区域#############################################################################################################################
//#############以下语句必须保留,建议不更改###################################################################################################################
//ob_clean();
echo serialize($LabelArray);
?>

标签: php 插件

评论(6) 引用(0) 浏览(10168)

"XXX站点创建失败"的解决办法

作者:小文 发布于:2010-9-14 14:56 Tuesday 分类:常见问题

如果默认的任务列表可以显示,创建站点或任务时出现失败的提示,很可能是由于用户使用了自定义时间,在保存数据库中时,这种时间格式不被ACCESS接入,导致失败.

处理办法:

修改时间格式为默认的 yyyy-MM-dd HH:mm:ss

注意事项:在火车采集器2010-9-15号后发布的版本不受此影响.用户不需要修改任何设置.

标签: 时间

评论(0) 引用(0) 浏览(4254)

Mysql Field * doesn't have a default value解决方法

作者:小文 发布于:2010-9-13 18:06 Monday 分类:常见问题

当采集器使用mysql作为数据库时,如果mysql版本在5.0或以上,可能会出现类似 Mysql Field * doesn't have a default value的问题.这是国为 MySQL manual 上说:“Prior to MySQL 5.0.2, .............................BLOB and TEXT columns cannot be assigned a default value. ”.所以我们需要修改mysql,使之兼容.修改办法

打开my.ini,查找
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

修改为

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启MYSQL

标签: mysql

评论(0) 引用(0) 浏览(16491)

Powered by emlog