PHPLIB-1206 Allow global registration of GridFS buckets with gridfs:// protocol#1138
PHPLIB-1206 Allow global registration of GridFS buckets with gridfs:// protocol#1138GromNaN merged 1 commit intomongodb:masterfrom
gridfs:// protocol#1138Conversation
|
A couple of high level questions about the API. Let's take this code from the PR description: $bucket = $client->selectDatabase('test_db')->selectGridFSBucket();
$bucket->registerAsDefaultStreamWrapper();
file_put_contents("gridfs://test_db/fs.files/filename.txt", 'Hello GridFS!');If we're already registering a bucket as the default stream wrapper, why does the URI still contain the database and bucket names? The bucket instance is tied to a client, database, and bucket, so I'd expect to use something like this: file_put_contents('gridfs://filename.txt', 'Hello GridFS!');This might create conflicts with us using GridFS internally. However, we could work around that by allowing to registerer a new stream wrapper for each bucket: $client->selectDatabase('test_db')->selectGridFSBucket()->registerStreamWrapper('foo');
$client->selectDatabase('test_db')->selectGridFSBucket(['name' => 'cache'])->registerStreamWrapper('cache');
file_put_contents('foo://filename.txt', 'Hello GridFS!'); // Writes to the fs.files collection
file_put_contents('cache://filename.txt', 'Hello GridFS!'); // Writes to the cache.files collectionNot only would this make accessing files easier, but it would also allow for using more than a single bucket if users so desire. |
|
I'm thinking to an other path pattern:
The context resolver will be a map instead of a single closure. We can reuse the same |
04a1cc8 to
6ebcc42
Compare
gridfs:// protocol
ed857c2 to
cf4c665
Compare
8891ad0 to
41c915b
Compare
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
94e3848 to
002e0d4
Compare
jmikola
left a comment
There was a problem hiding this comment.
Two outstanding comments about url_stat(), which GitHub thinks are outdated.
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
jmikola
left a comment
There was a problem hiding this comment.
I'll defer to you and Andreas to decide if disableMD5 should be changed.
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
docs/reference/method/MongoDBGridFSBucket-registerGlobalStreamWrapperAlias.txt
Outdated
Show resolved
Hide resolved
|
This CI failure looks relevant: I noticed some other CI failures related to Atlas Search spec tests failing to match error messages, but that's probably related to DRIVERS-2794 as it only fails on mongodb-latest. |
|
|
||
| // Insert 3 revisions, wait 1ms between each to ensure they have different uploadDate | ||
| file_put_contents($filename, 'version 0'); | ||
| usleep(1000); |
There was a problem hiding this comment.
@jmikola Added this 1ms delay to fix #1138 (comment)
* master: PHPLIB-1323 Implement `unlink` for GridFS stream wrapper (mongodb#1206) PHPLIB-1330: Sync tests for failCommand errorLabels reqs (mongodb#1214) PHPLIB-1246: Test PHP 8.3 on Evergreen (mongodb#1213) PHPLIB-1324 Implement `rename` for GridFS stream wrapper (mongodb#1207) PHPLIB-1248 Add examples on GridFS (mongodb#1196) Deprecate setting GridFS disableMD5 to false explicitly (mongodb#1205) PHPLIB-1326: Use more permissive top-level runOnRequirements (mongodb#1210) PHPLIB-1206 Add bucket alises for context resolver using GridFS StreamWrapper (mongodb#1138) Bump actions/upload-artifact from 3 to 4 (mongodb#1208) PHPLIB-1275: Replace apiargs usage in docs with extracts (mongodb#1203) Fix title formatting in Client::removeSubscriber() docs (mongodb#1204) PHPLIB-1304: Pull mongohouse image from ECR repo (mongodb#1202) Fix evergreen failures (mongodb#1200) Enable workflows to run for GitHub Merge Queue (mongodb#1199) PHPLIB-1313 Ensure the GridFS stream is saved when the script ends (mongodb#1197) PHPLIB-1309 Add addSubscriber/removeSubscriber to Client class to ease configuration (mongodb#1195) Master is now 1.18-dev
Fix PHPLIB-1206
Fix #1137
Allows to register an alias for the stream wrapper. File urls looks like:
Where
<bucket-alias>is an alias for the bucketTodo:
Bucket::registerGlobalStreamWrapperAlias