Skip to content

Commit

Permalink
解决进程编号显示异常的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
blogdaren committed Apr 8, 2022
1 parent e76a031 commit fd5e3be
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 75 deletions.
70 changes: 43 additions & 27 deletions src/Downloader.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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))
{
Expand All @@ -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;
}


}


69 changes: 42 additions & 27 deletions src/Parser.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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))
{
Expand All @@ -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;
}


}


59 changes: 38 additions & 21 deletions src/Producer.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
*
Expand All @@ -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))
{
Expand All @@ -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;
}
}
Expand Down

0 comments on commit fd5e3be

Please sign in to comment.