public ReplicaDatabaseIgnoreSubscriber::checkReplicaServer(GetResponseEvent $event)
Checks and disables the replica database server if appropriate.
Parameters
\Symfony\Component\HttpKernel\Event\GetResponseEvent $event: The Event to process.
File
- core/lib/Drupal/Core/EventSubscriber/ReplicaDatabaseIgnoreSubscriber.php, line 21
Class
- ReplicaDatabaseIgnoreSubscriber
- System subscriber for controller requests.
Namespace
Drupal\Core\EventSubscriber
Code
public function checkReplicaServer(GetResponseEvent $event) { // Ignore replica database servers for this request. // // In Drupal's distributed database structure, new data is written to the // master and then propagated to the replica servers. This means there is a // lag between when data is written to the master and when it is available // on the replica. At these times, we will want to avoid using a replica server // temporarily. For example, if a user posts a new node then we want to // disable the replica server for that user temporarily to allow the replica // server to catch up. // That way, that user will see their changes immediately while for other // users we still get the benefits of having a replica server, just with // slightly stale data. Code that wants to disable the replica server should // use the db_set_ignore_replica() function to set // $_SESSION['ignore_replica_server'] to the timestamp after which the replica // can be re-enabled. if (isset($_SESSION['ignore_replica_server'])) { if ($_SESSION['ignore_replica_server'] >= REQUEST_TIME) { Database::ignoreTarget('default', 'replica'); } else { unset($_SESSION['ignore_replica_server']); } } }
Please login to continue.