1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cc_1234-Group-Co

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
yi-bu-mysql-ke-hu-duan.md 2.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:43 b1fd262

Асинхронный клиент MySQL

AsyncMysql::query($sql, $usePool = true)

Второй параметр, установленный в false, не будет использовать ресурсы из пула соединений. По умолчанию все соединения берутся из пула. Количество подключений к пулу настраивается в config/database.php.

Конкретное использование
use AsyncMysql;

// Установка времени ожидания
AsyncMysql::setTimeout(2);

$res = (yield AsyncMysql::query("INSERT INTO `user` (`id`, `mobile`, `password`) VALUES (NULL, '18768122222', '11111')"));

if ($res) {
    $result = $res->getResult();
    $affectedRows = $res->getAffectedRows();
    $id = $res->getInsertId();
}

Асинхронная обработка транзакций MySQL

Используется так же, как и традиционные транзакции, но с добавлением ключевого слова yield для асинхронного вызова.

use AsyncMysql;

public function test() {
    try {
        yield AsyncMysql::begin();

        $res = (yield $this->doTrans());
        if ($res === false) {
            throw new \Exception("need roll back");
        }

        yield AsyncMysql::commit();
    } catch (\Exception $e) {
        yield AsyncMysql::rollback();
    }
}

public function doTrans() {
    $res = (yield AsyncMysql::query("INSERT INTO `user` (`id`, `mobile`, `password`) VALUES (NULL, '187681343332', '11111')"));

    if ($res) {
        $result = $res->getResult();
        $affectedRows = $res->getAffectedRows();
        $id = $res->getInsertId();
        $res = (yield AsyncMysql::query("SELECT * FROM `user` WHERE id = {$id}"));
        $res = (yield AsyncMysql::query("SELECT * FROM `user`"));
        $res = (yield AsyncMysql::query("DELETE FROM `user` WHERE id = {$id}", false));
    }

    yield true;
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cc_1234-Group-Co.git
git@api.gitlife.ru:oschina-mirror/cc_1234-Group-Co.git
oschina-mirror
cc_1234-Group-Co
cc_1234-Group-Co
master