rrwitp / core
v0.3.0
2019-09-28 19:36 UTC
Requires
- php: >=7.1
- charlottedunois/set: ^0.1.1
- charlottedunois/validator: ^0.3.0
- evenement/evenement: ^3.0|^2.0
- react/promise: ^2.7
- react/promise-stream: ^1.1
Requires (Dev)
- clue/block-react: ^1.3
- phpunit/phpunit: ^7.0
- react/event-loop: ^1.0
This package is not auto-updated.
Last update: 2024-09-24 07:42:30 UTC
README
Plasma提供异步、非阻塞(数据访问)的数据库抽象层。这是核心组件,定义了公共部分和接口。
核心组件本身不做任何事情,你需要一个Plasma驱动程序,该驱动程序处理所有DBMS的交互。
Plasma的目标不是成为一个完整的数据库抽象层。模拟缺失的功能不是目标,也不应该是。
有关驱动程序的列表,请参阅主仓库。
入门指南
选择驱动程序后,可以使用composer
进行安装。对于核心组件,命令是
composer require plasma/core
每个驱动程序都有自己的依赖项,因此它们必须实现一个工厂,以正确创建它们的驱动程序实例。有关更多信息,请参阅驱动程序项目页面。
以下是一些伪代码示例
$loop = \React\EventLoop\Factory::create(); $factory = new \SomeGuy\PlasmaDriver\MsSQLFactory($loop); $client = \Plasma\Client::create($factory, 'root:1234@localhost'); $client->execute('SELECT * FROM `users`', []) ->then(function (\Plasma\QueryResultInterface $result) use ($client) { // Do something with the query result // Most likely for a SELECT query, // it will be a streaming query result $client->close()->done(); }, function (\Throwable $error) use ($client) { // Oh no, an error occurred! echo $error.\PHP_EOL; $client->close()->done(); }); $loop->run();
游标
游标是一种强大的方式,可以完全控制检索行。游标允许你控制何时从数据库检索行(或多个行),并在检索数百万行时允许应用程序占用很小的内存。
游标返回一个承诺,并在解析为行、行数组或false
(没有更多行)时解决。由于它们返回承诺,因此不需要依赖事件,并且在传递结果时可能不需要缓冲行。
当将游标与生成器协程(如Recoil)结合使用时,你将获得一个强大的工具,它已经是PDO中熟悉的内容。
// Inside a coroutine /** @var \Plasma\CursorInterface $cursor */ $cursor = yield $client->createReadCursor('SELECT * FROM `my_table`'); while($row = yield $cursor->fetch()) { // Process row }
游标的支持取决于个别驱动程序。