integral/flysystem-pdo-adapter
Composer 安装命令:
composer require integral/flysystem-pdo-adapter
包简介
PDO adapter for Flysystem file abstraction layer
README 文档
README
PDO database adapter for Flysystem filesystem abstraction. No additional dependencies, only PDO extension required.
Installation
composer require integral/flysystem-pdo-adapter
Database Configuration
At the beginning you have to create a table that will be used to store files.
SQL table schema examples for MySQL, SQLite and PostgreSQL are presented below.
MySQL
CREATE TABLE files ( id int(11) NOT NULL AUTO_INCREMENT, path varchar(255) NOT NULL, type enum('file','dir') NOT NULL, contents longblob, size int(11) NOT NULL DEFAULT 0, mimetype varchar(127), timestamp int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY path_unique (path) );
SQLite
CREATE TABLE files ( id INTEGER PRIMARY KEY, path TEXT NOT NULL UNIQUE, type TEXT NOT NULL, contents BLOB, size INTEGER NOT NULL DEFAULT 0, mimetype TEXT, timestamp INTEGER NOT NULL DEFAULT 0 )
PostgreSQL
CREATE TABLE public.files ( id serial NOT NULL, path varchar(255) NOT NULL, type varchar(4) NOT NULL, contents bytea, size integer NOT NULL DEFAULT 0, mimetype varchar(127), "timestamp" integer NOT NULL DEFAULT 0, is_compressed boolean NOT NULL DEFAULT true, update_ts timestamp(0) with time zone DEFAULT NOW(), CONSTRAINT files_pkey PRIMARY KEY (id), CONSTRAINT type_check CHECK (type='dir' or type='file'), CONSTRAINT path_unique UNIQUE (path) );
Usage
Create an adapter by passing a valid PDO object and table name as constructor arguments:
MySQL
// http://php.net/manual/pl/ref.pdo-mysql.connection.php $pdo = new PDO('mysql:host=hostname;dbname=database_name', 'username', 'password'); $adapter = new PDOAdapter($pdo, 'files');
SQLite
// http://php.net/manual/pl/ref.pdo-sqlite.connection.php $pdo = new PDO('sqlite:/absolute/path/to/database.sqlite'); $adapter = new PDOAdapter($pdo, 'files');
PostgreSQL
// http://php.net/manual/pl/ref.pdo-pgsql.php $pdo = new PDO('pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass'); $adapter = new PDOAdapter($pdo, 'public.files');
Then simply pass the created adapter to \League\Flysystem\Filesystem:
$filesystem = new Filesystem($adapter);
Done! At this point the $filesystem is ready to use.
Note
This implementation emulates a tree structured filesystem, therefore some of the operations (like renaming or deleting a folder) produce quite a lot of database queries, which may result in a poor performance for some scenarios.
integral/flysystem-pdo-adapter 适用场景与选型建议
integral/flysystem-pdo-adapter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.32k 次下载、GitHub Stars 达 21, 最近一次更新时间为 2015 年 11 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 integral/flysystem-pdo-adapter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 integral/flysystem-pdo-adapter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 12.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 21
- 点击次数: 16
- 依赖项目数: 1
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2015-11-21