Как использовать PHP Binance Connector для записи данных в базу данных?

Как извлечь данные из переменной "$callbacks" для записи их в базу данных в данном коде на PHP с использованием библиотеки Binance Spot Websocket?
  • 25 января 2024 г. 22:39
Ответы на вопрос 1
Для записи данных, полученных через API биржи Binance, в базу данных с помощью PHP, вам потребуется выполнить несколько шагов. Давайте предположим, что у вас уже есть установленный и подключенный PHP Binance Connector, а также что у вас есть доступ к базе данных. В качестве примера можно использовать MySQL с расширением PDO для PHP.

Во-первых, вам нужно определить структуру вашей базы данных и создать соответствующую таблицу, которая будет хранить данные из API.

Во-вторых, настроить соединение с базой данных.

В-третьих, определите callback-функцию, которая будет обрабатывать данные от Binance и записывать их в базу.

Ниже приводится пример кода, который демонстрирует, как это может быть реализовано:

```php
<?php
require 'vendor/autoload.php'; // Подключите автозагрузчик Composer, если используется

// Настройка соединения с базой данных
$host = '127.0.0.1';
$db   = 'your_database';
$user = 'your_username';
$pass = 'your_password';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

// Подключаемся к WebSocket Binance
$api = new Binance\API('YOUR_API_KEY','YOUR_SECRET');
$endpoint = "btcusdt@trade"; // Например, можно подписаться на торговые данные по паре BTC/USDT

// Callback-функция для обработки данных
$callback = function($api, $symbol, $data) use ($pdo) {
    // Извлечение данных из $data для сохранения в БД
    $price = $data['p']; // Текущая цена
    $quantity = $data['q']; // Количество
    
    // Подготовка запроса на вставку
    $stmt = $pdo->prepare("INSERT INTO trades (symbol, price, quantity) VALUES (:symbol, :price, :quantity)");
    
    // Выполнение запроса на вставку
    $stmt->execute(['symbol' => $symbol, 'price' => $price, 'quantity' => $quantity]);
};

// Запуск WebSocket и назначение callback-функции
$api->miniTicker($callback, $endpoint);

// Вечный цикл, чтобы скрипт постоянно работал
while(true) {
    // Вы можете вставить сюда логику для корректного завершения работы скрипта при необходимости
    // sleep(1);
}
```

Для того чтобы связать данный код с PHP Binance Connector, вам нужно будет заменить строчку с подключением WebSocket на правильную для вашей библиотеки. Пример использует метод `miniTicker`, но в зависимости от ваших нужд, вам может потребоваться использовать другой метод из PHP Binance Connector.

Не забудьте также создать таблицу `trades` (или подобную), в которой будут поля `symbol`, `price`, и `quantity`.

Обезательно измените значение строки подключения, пользователя, пароля и имени базы данных в переменных `$host`, `$db`, `$user` и `$pass` на настоящие значения доступа к вашей базе данных.
Похожие вопросы