假设我有一个Laravel应用程序,它不是一个经典的网站,而且这个应用程序在一个不可靠的环境中运行。在某种意义上说,在任何时候环境的一个方面可能在短时间内突然变得不可用,这是不可靠的。我们可以在这里的问题上关注数据库服务器。让我们说我想要创建一个能够应对这些问题的应用程序,其中查询最终执行比使用奇特的错误消息响应更重要。
所以,我想实现这样的东西:
for ($numRetries = 0; $numRetries <= MAX_NUM_RETIRES; $numRetries++) {
try {
// run the DB CRUD command
} catch (SomeExceptionsInWhichImInterestedIn $e) {
sleep(SOME_TIME);
continue;
}
break;
}
问题是......在哪里?我不想做的是必须用这样的一大块代码包围每个数据库调用,我希望它在应用程序中自动应用。我一直在寻找中间件,事件,观察者,进入Eloquent模型类本身,但我仍然不确定如何去做。