Skip to content

Commit

Permalink
add onDownloaderConnectToParser callback API for downloader component
Browse files Browse the repository at this point in the history
  • Loading branch information
blogdaren committed Oct 20, 2024
1 parent 08cafd3 commit 3a39d11
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 19 deletions.
1 change: 1 addition & 0 deletions src/Downloader.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Downloader extends \PHPCreeper\Downloader
'onStartDownload',
'onAfterDownload',
'onFailDownload',
'onDownloaderConnectToParser',
'onDownloaderMessage',
'onDownloaderReload',
'onDownloaderStart',
Expand Down
57 changes: 38 additions & 19 deletions src/config/plugin/blogdaren/webman-phpcreeper/spider/main.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,38 @@
* @brief main.config
* @author blogdaren<blogdaren@163.com>
* @link http://www.phpcreeper.com
* @manual http://www.phpcreeper.com/docs/DevelopmentGuide/ApplicationConfig.html
* @create 2022-04-08
*/


return array(
'language' => 'zh', //设置语言环境,目前暂支持中文和英文 (可选项,默认zh)
//设置语言环境,目前暂支持中文和英文 (可选项,默认zh)
'language' => 'zh',

//全局任务配置参数:每条任务也可以单独配置自己的context成员,最终采用merge合并覆盖策略
'task' => array(
//'crawl_interval' => 1, //任务爬取间隔,单位秒,最小支持0.001秒 (可选项,默认1秒)
//'max_depth' => 1, //最大爬取深度, 0代表爬取深度无限制 (可选项,默认1)
//'max_number' => 1000, //任务队列最大task数量, 0代表无限制 (可选项,默认0)
'crawl_interval' => 1, //任务爬取间隔,单位秒,最小支持0.001秒 (可选项,默认1秒)

'max_depth' => 1, //最大爬取深度,0代表爬取深度无限制 (可选项,默认1)

'max_number' => 0, //任务队列最大task数量, 0代表无限制 (可选项,默认0)

//当前Socket连接累计最大请求数,0代表无限制 (可选项,默认0)
//如果当前Socket连接的累计请求数超过最大请求数时,
//parser端会主动关闭连接,同时客户端会自动尝试重连
//'max_request' => 1000,
//特指每个下载器进程可以建立到解析器的最大连接数 (可选项,默认1,最小值为1,最大值为1000)
'max_connections' => 1,

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

//限定爬取站点域,留空表示不受限
'limit_domains' => [],

//根据预期任务总量和误判率引擎会自动计算布隆过滤器最优的bitmap长度以及hash函数的个数
/*
*'bloomfilter' => [
* 'expected_insertions' => 10000, //预期任务总量
* 'expected_falseratio' => 0.01, //预期误判率
*],
*/
'bloomfilter' => [
//'expected_insertions' => 10000, //预期任务总量
//'expected_falseratio' => 0.01, //预期误判率
],

//特别注意: 此处配置的context是全局context,我们也可以为每条任务设置私有context,
//其上下文成员完全相同,全局context与任务私有context最终采用合并覆盖的策略,
Expand All @@ -42,33 +47,47 @@
'context' => array(
//是否缓存下载数据(可选项,默认false)
'cache_enabled' => true,

//缓存下载数据存放目录 (可选项,默认位于系统临时目录下)
'cache_directory' => sys_get_temp_dir() . '/DownloadCache4PHPCreeper/',

//在特定的生命周期内是否允许重复抓取同一个URL资源(可选项,默认false)
'allow_url_repeat' => true,

//要不要跟踪完整的TASK数据包,开启后终端会显示完整的任务数据包 [默认false]
'track_task_package' => true,

//在v1.6.0之前,如果rulename留空,默认会使用 md5($task_url)作为rulename
//自v1.6.0开始,如果rulename留空,默认会使用 md5($task_id) 作为rulename
//所以这个配置参数是仅仅为了保持向下兼容,但是不推荐使用,因为有潜在隐患
//换句话如果使用的是v1.6.0之前旧版本,那么才有可能需要激活本参数 [默认false]
'force_use_md5url_if_rulename_empty' => false,

//强制使用多任务创建API的旧版本参数风格,保持向下兼容,不再推荐使用 [默认false]
'force_use_old_style_multitask_args' => false,

//cookies成员的配置格式和guzzle官方不大一样,屏蔽了cookieJar,取值[false|array]
'cookies' => [
//'domain' => 'domain.com',
//'k1' => 'v1',
//'k2' => 'v2',
],

//除了内置参数之外,还可以自由配置自定义参数,在上下游业务链应用场景中十分有用
'user_define_arg1' => 'user_define_value1',
'user_define_arg2' => 'user_define_value2',

//无头浏览器,如果是动态页面考虑启用,否则应当禁用 [默认使用chrome且为禁用状态]
'headless_browser' => [
'headless' => false,
],

//要不要提取子URL,注意提取成功后并不会入队,
//可配合onParserFindUrl回调API自行入队[默认true]
'extract_sub_url' => true,

//更多其他上下文参数详见官方手册[应用配置]和[常见问题]章节
),
//无头浏览器,如果是动态页面考虑启用,否则应当禁用 [默认使用chrome且为禁用状态]
'headless_browser' => [
'headless' => false,
],
),
),
);

0 comments on commit 3a39d11

Please sign in to comment.