Setup of Mongo ODM in PHP 7 - performance considered
In a previous topic I have described our journey in optimising a symfony app ( the-journey-of-a-symfony-api-from-150ms-to-20ms ). Some of you have asked about specific configs, so here we go:
Install mongo-odm and the adapter:
php composer.phar require alcaeus/mongo-php-adapter php composer.phar require doctrine/mongodb-odm-bundle
Now let's configure it:
doctrine_mongodb: connections: default: server: mongodb://%mongo_server% options: connect: true connectTimeoutMS: 300 # as stated in the original post: timeouts are very important default_database: %database_name% document_managers: default: # this is also important to reduce disk usage, you could also use other backends for caching this metadata_cache_driver: apc retry_connect: 1 retry_query: 1 auto_mapping: true
To have the best control I recommend to allow slave readonly only from code. For this you can simply use:
$this->mongo->getManager()->getClassMetadata(MyDocumentType::class)->slaveOkay = true