pxgamer/dht-search

一套通过PHP搜索DHT的工具集合。

v1.0.0 2017-12-06 15:10 UTC

This package is auto-updated.

Last update: 2024-08-29 04:54:19 UTC


README

Latest Version on Packagist Software License Build Status Style CI Code Coverage Total Downloads

一套通过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

贡献

有关详细信息,请参阅CONTRIBUTINGCODE_OF_CONDUCT

安全

如果您发现任何安全问题,请通过owzie123@gmail.com发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件