(PECL mongo >=0.9.0)

MongoGridFS::storeFileStores a file in the database


public MongoGridFS::storeFile ( string|resource $filename [, array $metadata = array() [, array $options = array() ]] ) : mixed

Elenco dei parametri


Name of the file or a readable stream to store.


Other metadata fields to include in the file document.


These fields may also overwrite those that would be created automatically by the driver, as described in the MongoDB core documentation for the » files collection. Some practical use cases for this behavior would be to specify a custom chunkSize or _id for the file.


An array of options for the insert operations executed against the chunks and files collections. See MongoCollection::insert() for documentation on these these options.

Valori restituiti

Returns the _id of the saved file document. This will be a generated MongoId unless an _id was explicitly specified in the metadata parameter.


Throws MongoGridFSException if there is an error reading filename or inserting into the chunks or files collections.


Example #1 MongoGridFS::storeFile() with additional metadata

= new MongoClient();
$gridfs $m->selectDB('test')->getGridFS();

$id $gridfs->storeFile('example.txt', array('contentType' => 'plain/text'));
$gridfsFile $gridfs->get($id);


Il precedente esempio visualizzerĂ  qualcosa simile a:

array(7) {
  object(MongoId)#6 (0) {
  string(10) "plain/text"
  string(11) "example.txt"
  object(MongoDate)#7 (0) {
  string(32) "c3fcd3d76192e4007dfb496cca67e13b"

Vedere anche:

add a note add a note

User Contributed Notes 1 note

mike at eastghost dot com
8 years ago

$options['safe'] = true;

to make Mongo slow down and do inserts sequentially instead of in parallel.

Use case:

I had 274 PDF documents stored on ext3 disk (avg. size was 5MB, none over 20MB)

A PHP loop loaded each PDF, then did a $GridFS->storeFile( $data, $meta );

This caused server to spike from load average of 0.2 to over 20.0

Apparently what was happening is the loop slammed Mongo (then memory, disk) with 274 convert/stores to do all at once.


$GridFS->storeFile( $data, $meta, array( 'safe' => true ) );

made the loop slow down and wait for each insert to finish and be confirmed before going on to next PDF.

Moral: Safe option can be used to maintain sanity and is not always just for data validity.
To Top