-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
123 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,8 +3,8 @@ | |
* @script Downloader.php | ||
* @brief wrapper for PHPCreeper.Downloader | ||
* @author blogdaren<[email protected]> | ||
* @version 1.0.0 | ||
* @modify 2022-04-01 | ||
* @version 1.0.1 | ||
* @modify 2022-04-08 | ||
*/ | ||
|
||
namespace Webman\PHPCreeper; | ||
|
@@ -13,31 +13,38 @@ | |
|
||
class Downloader extends \PHPCreeper\Downloader | ||
{ | ||
/** | ||
* @brief procuder callback | ||
*/ | ||
const CALLBACK_MAPS = [ | ||
'onBeforeDownload', | ||
'onStartDownload', | ||
'onAfterDownload', | ||
'onDownloaderMessage', | ||
'onDownloaderReload', | ||
'onDownloaderStart', | ||
'onDownloaderStop', | ||
]; | ||
|
||
/** | ||
* @brief webman worker | ||
*/ | ||
private $_worker = null; | ||
|
||
/** | ||
* @param array $config | ||
* | ||
* @return null | ||
* @return null | ||
*/ | ||
public function __construct($config) | ||
{ | ||
//强制使用多worker运作模式 | ||
PHPCreeper::$isRunAsMultiWorker = true; | ||
|
||
//必须调用 | ||
parent::__construct($config); | ||
|
||
$callback_maps = [ | ||
'onBeforeDownload', | ||
'onStartDownload', | ||
'onAfterDownload', | ||
'onDownloaderMessage', | ||
'onDownloaderReload', | ||
'onDownloaderStart', | ||
'onDownloaderStop', | ||
]; | ||
|
||
$this->rebindSpiderWorkerProps(); | ||
|
||
foreach($callback_maps as $callback) | ||
foreach(self::CALLBACK_MAPS as $callback) | ||
{ | ||
if(method_exists($this, $callback)) | ||
{ | ||
|
@@ -46,39 +53,48 @@ public function __construct($config) | |
} | ||
} | ||
|
||
/** | ||
* @brief onWorkerStart | ||
* | ||
* @param object $worker | ||
* | ||
* @return null | ||
*/ | ||
public function onWorkerStart($worker) | ||
{ | ||
empty($this->_worker) && $this->_worker = $worker; | ||
$this->rebindSpiderWorkerProps(); | ||
parent::onWorkerStart($this); | ||
} | ||
|
||
/** | ||
* @brief 重新绑定部分属性: InternalWorker --> SpiderWorker | ||
* | ||
* @return object | ||
*/ | ||
public function rebindSpiderWorkerProps() | ||
{ | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
$this->id = $this->_worker->id; | ||
$this->setCount($this->_worker->count); | ||
$this->setName($this->_worker->name); | ||
$this->setServerSocketAddress($this->_worker->getSocketName()); | ||
|
||
//注意:context option需要透析配置文件单独绑定 | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
if(empty($process_config) || !is_array($process_config)) return $this; | ||
|
||
foreach($process_config as $name => $v) | ||
{ | ||
if(!empty($v['handler']) && get_class($this) == $v['handler']) | ||
{ | ||
$this->setName($name); | ||
|
||
if(!empty($v['count'])) | ||
{ | ||
$this->setCount($v['count']); | ||
} | ||
|
||
!empty($v['listen']) && $this->setServerSocketAddress($v['listen']); | ||
!empty($v['context']) && $this->setServerSocketContext($v['context']); | ||
|
||
break; | ||
} | ||
} | ||
|
||
return $this; | ||
} | ||
|
||
|
||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,8 +3,8 @@ | |
* @script Parser.php | ||
* @brief wrapper for PHPCreeper.Parser | ||
* @author blogdaren<[email protected]> | ||
* @version 1.0.0 | ||
* @modify 2022-04-01 | ||
* @version 1.0.1 | ||
* @modify 2022-04-08 | ||
*/ | ||
|
||
namespace Webman\PHPCreeper; | ||
|
@@ -13,30 +13,37 @@ | |
|
||
class Parser extends \PHPCreeper\Parser | ||
{ | ||
/** | ||
* @brief procuder callback | ||
*/ | ||
const CALLBACK_MAPS = [ | ||
'onParserStart', | ||
'onParserStop', | ||
'onParserReload', | ||
'onParserExtractField', | ||
'onParserFindUrl', | ||
'onParserMessage', | ||
]; | ||
|
||
/** | ||
* @brief webman worker | ||
*/ | ||
private $_worker = null; | ||
|
||
/** | ||
* @param array $config | ||
* | ||
* @return null | ||
* @return null | ||
*/ | ||
public function __construct($config) | ||
{ | ||
//强制使用多worker运作模式 | ||
PHPCreeper::$isRunAsMultiWorker = true; | ||
|
||
//必须调用 | ||
parent::__construct($config); | ||
|
||
$callback_maps = [ | ||
'onParserStart', | ||
'onParserStop', | ||
'onParserReload', | ||
'onParserExtractField', | ||
'onParserFindUrl', | ||
'onParserMessage', | ||
]; | ||
|
||
$this->rebindSpiderWorkerProps(); | ||
|
||
foreach($callback_maps as $callback) | ||
foreach(self::CALLBACK_MAPS as $callback) | ||
{ | ||
if(method_exists($this, $callback)) | ||
{ | ||
|
@@ -45,39 +52,47 @@ public function __construct($config) | |
} | ||
} | ||
|
||
/** | ||
* @brief onWorkerStart | ||
* | ||
* @param object $worker | ||
* | ||
* @return null | ||
*/ | ||
public function onWorkerStart($worker) | ||
{ | ||
empty($this->_worker) && $this->_worker = $worker; | ||
$this->rebindSpiderWorkerProps(); | ||
parent::onWorkerStart($this); | ||
} | ||
|
||
/** | ||
* @brief 重新绑定部分属性: InternalWorker --> SpiderWorker | ||
* | ||
* @return object | ||
*/ | ||
public function rebindSpiderWorkerProps() | ||
{ | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
$this->id = $this->_worker->id; | ||
$this->setCount($this->_worker->count); | ||
$this->setName($this->_worker->name); | ||
$this->setServerSocketAddress($this->_worker->getSocketName()); | ||
|
||
//注意:context option需要透析配置文件单独绑定 | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
if(empty($process_config) || !is_array($process_config)) return $this; | ||
|
||
foreach($process_config as $name => $v) | ||
{ | ||
if(!empty($v['handler']) && get_class($this) == $v['handler']) | ||
{ | ||
$this->setName($name); | ||
|
||
if(!empty($v['count'])) | ||
{ | ||
$this->setCount($v['count']); | ||
} | ||
|
||
!empty($v['listen']) && $this->setServerSocketAddress($v['listen']); | ||
!empty($v['context']) && $this->setServerSocketContext($v['context']); | ||
|
||
break; | ||
} | ||
} | ||
|
||
return $this; | ||
} | ||
|
||
|
||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,8 +3,8 @@ | |
* @script Producer.php | ||
* @brief wrapper for PHPCreeper.Producer | ||
* @author blogdaren<[email protected]> | ||
* @version 1.0.0 | ||
* @modify 2022-04-01 | ||
* @version 1.0.1 | ||
* @modify 2022-04-08 | ||
*/ | ||
|
||
namespace Webman\PHPCreeper; | ||
|
@@ -13,6 +13,20 @@ | |
|
||
class Producer extends \PHPCreeper\Producer | ||
{ | ||
/** | ||
* @brief procuder callback | ||
*/ | ||
const CALLBACK_MAPS = [ | ||
'onProducerStart', | ||
'onProducerStop', | ||
'onProducerReload', | ||
]; | ||
|
||
/** | ||
* @brief webman worker | ||
*/ | ||
private $_worker = null; | ||
|
||
/** | ||
* @param array $config | ||
* | ||
|
@@ -23,17 +37,10 @@ public function __construct($config) | |
//强制使用多worker运作模式 | ||
PHPCreeper::$isRunAsMultiWorker = true; | ||
|
||
//必须调用 | ||
parent::__construct($config); | ||
|
||
$callback_maps = [ | ||
'onProducerStart', | ||
'onProducerStop', | ||
'onProducerReload', | ||
]; | ||
|
||
$this->rebindSpiderWorkerProps(); | ||
|
||
foreach($callback_maps as $callback) | ||
foreach(self::CALLBACK_MAPS as $callback) | ||
{ | ||
if(method_exists($this, $callback)) | ||
{ | ||
|
@@ -42,31 +49,41 @@ public function __construct($config) | |
} | ||
} | ||
|
||
/** | ||
* @brief onWorkerStart | ||
* | ||
* @param object $worker | ||
* | ||
* @return null | ||
*/ | ||
public function onWorkerStart($worker) | ||
{ | ||
empty($this->_worker) && $this->_worker = $worker; | ||
$this->rebindSpiderWorkerProps(); | ||
parent::onWorkerStart($this); | ||
} | ||
|
||
/** | ||
* @brief 重新绑定部分属性: InternalWorker --> SpiderWorker | ||
* | ||
* @return object | ||
*/ | ||
public function rebindSpiderWorkerProps() | ||
{ | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
$this->id = $this->_worker->id; | ||
$this->setCount($this->_worker->count); | ||
$this->setName($this->_worker->name); | ||
$this->setServerSocketAddress($this->_worker->getSocketName()); | ||
|
||
//注意:context option需要透析配置文件单独绑定 | ||
$process_config = config('plugin.blogdaren.webman-phpcreeper.process'); | ||
if(empty($process_config) || !is_array($process_config)) return $this; | ||
|
||
foreach($process_config as $name => $v) | ||
{ | ||
if(!empty($v['handler']) && get_class($this) == $v['handler']) | ||
{ | ||
$this->setName($name); | ||
|
||
if(!empty($v['count'])) | ||
{ | ||
$this->setCount($v['count']); | ||
} | ||
|
||
!empty($v['listen']) && $this->setServerSocketAddress($v['listen']); | ||
!empty($v['context']) && $this->setServerSocketContext($v['context']); | ||
|
||
break; | ||
} | ||
} | ||
|