应用配置说明

[!WARNING|style:callout|label:注意事项|iconVisibility:default|labelVisibility:default|className:block-warning] 1、所有的配置文件都必须放到应用的Config目录下;
2、配置文件的名称必须和启动脚本的名称完全一致;
3、大部分选项都是可选的,至于必配项会在圆括号内加以特别说明,需要开发者特别留意;

0x01、每个应用默认都包含有四类配置文件:
  • global.php: 全局配置文件,一般无需修改,除非有新增全局子配置文件。
  • main.php: 全局子配置文件,主要用来配置和任务相关的参数。
  • database.php:全局子配置文件,主要用来配置和数据库相关的参数。
  • xxxx.php: 这里的xxxx代表各个业务worker实例,用来配置各个业务worker实例相关的参数。
0x02、每个业务worker实例各自拥有一个独立的配置文件:

假设我们为Weather应用编写了3个不同的业务worker实例,那么其对应的配置文件分别是:

/path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppProducer.php
/path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppDownloader.php
/path/to/PHPCreeper-Application/Application/Spider/Weather/Config/AppParser.php

那么这3个业务worker实例对应的启动脚本分别如下:

/path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppProducer.php
/path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppDownloader.php
/path/to/PHPCreeper-Application/Application/Spider/Weather/Start/AppParser.php
0x03、global.php

全局配置文件,一般无需修改,除非有新增全局子配置文件。

0x04、main.php
return array(
    'language' => 'zh',             //设置语言环境,目前暂支持中文和英文 (可选项,默认zh)
    'multi_worker'  => true,        //是否启用多worker运作模式 (可选项,默认true)
    'start' => array(
        'AppProducer'      => true, //是否启动AppProducer实例 (可选项,默认true)
        'AppDownloader'    => true, //是否启动AppDownloader实例 (可选项,默认true)
        'AppParser'        => true, //是否启动AppParser实例 (可选项,默认true)
        '.........'        => ...., //是否启动其他的worker实例 (愿意配哪个就配哪个)
    ),
    'task' => array(
        'method'          => 'get', //HTTP请求方式 (可选项,默认get)
        'crawl_interval'  => 1,     //任务爬取间隔,单位秒,最小支持0.001秒 (可选项,默认1秒)
        'max_depth'       => 1,     //最大爬取深度, 0代表爬取深度无限制 (可选项,默认1)
        'max_number'      => 1000,  //任务队列最大task数量, 0代表无限制 (可选项,默认0)

        //当前Socket连接累计最大请求数,0代表无限制 (可选项,默认0)
        //如果当前Socket连接的累计请求数超过最大请求数时,
        //parser端会主动关闭连接,同时客户端会自动尝试重连
        'max_request'     => 1000,

        'compress'  => array(
            'enabled'   =>  true,   //是否启用通信数据压缩  (可选项,默认true)
            'algorithm' => 'gzip',  //通信数据压缩算法,支持 gzip和deflate  (可选项,默认gzip)
        ),

        //限定爬取站点域,留空表示不受限
        'limit_domains' => array(
        ),

        //设定初始爬取URL,取值可以是字符串或数组,当配置为数组时 (必配项):
        //key代表规则名称,和`rule`字段的key一一对应,主要用于快速索引目标数据集
        //key也可以不设定,此时内部将使用 md5($task_url) 作为默认的规则名称
        'url' => array(
            "r1" => "http://www.weather.com.cn/weather/101010100.shtml", 
            "r2" => "http://www.weather.com.cn/weather/101010101.shtml", 
            "http://www.weather.com.cn/weather/101010100.shtml", 
        ),

        //注意:关于如何配置业务抽取规则,请移步 "抽取规则" 一节查看具体说明
        //设置每条url对应的抓取规则,其中key和`url`字段的key配置一一对应 (必配项)
        'rule' => array(
            "r1"    => [在此设定业务抓取规则], 
            "r2"    => [在此设定业务抓取规则], 
            [在此设定业务抓取规则], 
        ),

        //设置发起http请求时的各种上下文参数  (可选项,默认空)
        //引擎默认采用guzzle客户端,兼容支持guzzle所有的请求参数选项,具体参考guzzle手册
        'context' => array(
            'cache_enabled'   => false,                               //是否缓存下载数据      (可选项,默认false)
            'cache_directory' => '/tmp/task/download/' . date('Ymd'), //缓存下载数据存放目录  (可选项,默认位于系统临时目录下)
        ),
   ),
);
0x05、database.php

全局子配置文件,主要用来配置和数据库相关的参数。

<?php
return array(
    'redis' => array(
        'prefix' => 'Weather',
        'host'   => '127.0.0.1',
        'port'   => 6379,
        'database' => 0,
        'auth'   => '',
    ),
);
0x06、AppProducer.php

配置第一个生产器业务实例

<?php
return array(
    'name' => 'producer1',  //当前实例名称,也可以代码级 $worker->setName()设定,注意代码级优先级较高  (可选项,默认none)
    'count' => 1,           //当前实例数量,即启动进程数量,也可以代码级 $worker->setCount()设定,注意代码级优先级较高  (可选项,默认1)
    'interval' => 1,        //生产任务的时间间隔,单位秒,最小支持0.001秒  (可选项,默认1秒)
);
0x07、AppDownloader.php

配置第一个下载器业务实例

<?php
return array(
    'name' => 'downloader1',    //当前实例名称,也可以代码级 $worker->setName()设定,注意代码级优先级高 (可选项,默认none)
    'count' => 2,               //当前实例数量,即启动进程数量,也可以代码级 $worker->setCount()设定,注意代码级优先级高  (可选项,默认1)

    //配置远程parser业务实例的socket地址,只能是一维数组或二维数组,即支持集群部署 (必配项)
    'socket' => array(
        'client' => array(
            'parser' => array(
                'scheme' => 'ws',       //必须和远程parser业务实例监听的协议一致,默认ws
                'host' => '127.0.0.1',  //远程parser业务实例主机地址,默认127.0.0.1
                'port' => 8888,         //远程parser业务实例主机端口,默认8888
            ),
        ),
    ),
);
0x08、AppParser.php

配置第一个解析器业务实例

<?php
return array(
    'name'  => 'parser1',   //当前实例名称,也可以代码级 $worker->setName()设定,注意代码级优先级高 (可选项,默认none)
    'count' => 3,           //当前实例数量,即启动进程数量,也可以代码级 $worker->setCount()设定,注意代码级优先级高 (可选项,默认1)

    //配置socket监听 (必配项)
    'socket' => array(
        'server' => array(
            'scheme' => 'websocket',    //默认websocket,支持frame、text以及自定义协议
            'host' => '0.0.0.0',        //默认0.0.0.0
            'port' => 8888,             //默认8888
        ),
    ),
);

results matching ""

    No results matching ""