Files
kiri-core/system/Process/Process.php
T

63 lines
1.1 KiB
PHP
Raw Normal View History

2020-08-31 01:27:08 +08:00
<?php
namespace Snowflake\Process;
use Snowflake\Abstracts\Component;
use Snowflake\Application;
2020-09-01 15:06:52 +08:00
use Snowflake\Exception\ComponentException;
use Swoole\Coroutine\Socket;
use Swoole\Process\Pool;
2020-08-31 01:27:08 +08:00
/**
* Class Process
2020-08-31 12:38:32 +08:00
* @package Snowflake\Snowflake\Service
2020-08-31 01:27:08 +08:00
*/
abstract class Process extends Component
{
/** @var Application */
protected $application;
/**
* Process constructor.
* @param $application
* @param array $config
*/
public function __construct(Application $application, $config = [])
{
$this->application = $application;
parent::__construct([]);
}
/**
* @param \Swoole\Process $process
* @return mixed
*/
abstract public function onHandler(\Swoole\Process $process);
2020-09-01 15:06:52 +08:00
/**
* @param $workerId
* @return Socket
* @throws ComponentException
*/
protected function exportSocket($workerId)
{
2020-09-01 15:07:01 +08:00
return $this->application->get(Pool::class)->getProcess($workerId)->exportSocket();
2020-09-01 15:06:52 +08:00
}
2020-08-31 01:27:08 +08:00
/**
*/
2020-09-01 15:01:11 +08:00
protected function start()
2020-08-31 01:27:08 +08:00
{
2020-09-01 15:01:11 +08:00
$_process = new \Swoole\Process([$this, 'onHandler'], false, null, true);
$_process->start();
2020-08-31 01:27:08 +08:00
}
}