pxgamer / dht-search
一套通过PHP搜索DHT的工具集合。
v1.0.0
2017-12-06 15:10 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^6.4
- squizlabs/php_codesniffer: ^3.1
This package is auto-updated.
Last update: 2024-08-29 04:54:19 UTC
README
一套通过PHP搜索DHT的工具集合。
结构
src/
tests/
vendor/
安装
通过Composer
$ composer require pxgamer/dht
用法
$serv = null; $this->node_id = Base::get_node_id(); $table = array(); $last_find = time(); $threads = []; Logger::write(date('Y-m-d H:i:s', time()) . " - Starting service...\n"); $serv = new swoole_server('0.0.0.0', 6882, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); $serv->set(array( 'worker_num' => WORKER_NUM, 'daemonize' => false, 'max_request' => MAX_REQUEST, 'dispatch_mode' => 2, 'log_file' => ABSPATH . '/error.log' )); $serv->on('WorkerStart', function ($serv, $worker_id) { swoole_timer_tick(AUTO_FIND_TIME, 'timer'); auto_find_node(); }); $serv->on('Receive', function ($serv, $fd, $from_id, $data) { if (strlen($data) == 0) { return false; } $msg = Base::decode($data); if (empty($msg['y'])) { return false; } $fdinfo = $serv->connection_info($fd, $from_id); if (empty($fdinfo['remote_ip'])) { return false; } if ($msg['y'] == 'r') { if (array_key_exists('nodes', $msg['r'])) { Response::action($msg, array($fdinfo['remote_ip'], $fdinfo['remote_port'])); } } elseif ($msg['y'] == 'q') { Request::action($msg, array($fdinfo['remote_ip'], $fdinfo['remote_port'])); } else { return false; } }); $serv->start();
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅CONTRIBUTING和CODE_OF_CONDUCT。
安全
如果您发现任何安全问题,请通过owzie123@gmail.com发送电子邮件,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。