karelwintersky/arris.database.lazypdo

Arris µFramework lazyPDO

0.2.0 2025-05-22 12:06 UTC

This package is auto-updated.

Last update: 2025-05-22 12:35:58 UTC


README

require_once __DIR__ . '/vendor/autoload.php';

$config =
    (new \Arris\Database\LazyPDOConfig())
    ->setUsername('arris')
    ->setPassword('password')
    ->setDatabase('test');
    
$pdo = $config->connect();
// or
$pdo = new \Arris\Database\LazyPDO($config);

$pdo->query('SELECT * FROM phpauth_users');
$pdo->exec('UPDATE phpauth_users SET dt = NOW() WHERE id = 1');

$sth = $pdo->prepare('SELECT * FROM phpauth_users WHERE id = ?');
$sth->exec([ 1 ]);

// Получаем статистику
echo "Всего запросов: " . $pdo->stats()->getQueryCount() . "\n";
echo "Общее время запросов: " . $pdo->stats()->getTotalQueryTime() . " сек\n";

// Детальная информация о запросах
print_r($pdo->stats()->getQueries());

OR

$pdo->query("TRUNCATE TABLE test");

$sth = $pdo->prepare("/* insert data */ INSERT INTO test (property, value) VALUES (:s, :v)");

for ($i=1; $i<100000; $i++){
   $sth->execute([
       's' =>  'option_' . $i,
       'v' =>  mt_rand(100, 10000)
   ]);
}

var_dump( $pdo->query("/* select query */ SELECT * FROM test ORDER BY RAND() LIMIT 1")->fetch() );

// Получаем статистику
echo "Всего запросов: " . $pdo->stats()->getQueryCount() . "\n";
echo "Всего подготовленных запросов: " . $pdo->stats()->getPreparedQueryCount() . "\n";
echo "Общее время запросов: " . $pdo->stats()->getTotalQueryTime() . " сек\n";
$stats = $pdo->getStats();

echo "Всего запросов: " . $stats->getTotalQueryCount() . "\n";
echo "Медленных запросов: " . $stats->getSlowQueriesCount() . "\n";
echo "Порог медленных запросов: " . $stats->getSlowQueryThreshold() . " сек\n";
// Детальная информация о медленных запросах
echo "Медленные запросы:\n";
foreach ($stats->getSlowQueries() as $query) {
    printf(
        "Запрос: %s\nВремя: %.3f сек\nПараметры: %s\n\n",
        $query['query'],
        $query['time'],
        json_encode($query['params'] ?? [])
    );
}