You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Метод `has` используется для определения того, существует ли элемент в кеше. Этот метод также вернет `false`, если элемент существует, но его значение равно `null`:
> При тестировании вызова глобальной функции `cache` вы можете использовать метод `Cache::shouldReceive` так же, как если бы вы [тестировали фасад](/docs/{{version}}/mocking#mocking-facades).
Метод `get` также принимает замыкание. После выполнения замыкания Laravel автоматически снимет блокировку:
321
319
322
320
Cache::lock('foo', 10)->get(function () {
323
-
// Блокировка установлена на 10 секунд и автоматически снимается...
321
+
// Блокировка установлена на 10 секунд и автоматически снимается...
324
322
});
325
323
326
324
Если блокировка недоступна в тот момент, когда вы ее запрашиваете, вы можете указать Laravel подождать определенное количество секунд. Если блокировка не может быть получена в течение указанного срока, то будет выброшено исключение `Illuminate\Contracts\Cache\LockTimeoutException`:
// Блокировка получена после ожидания максимум 5 секунд...
333
+
// Блокировка получена после ожидания максимум 5 секунд...
336
334
} catch (LockTimeoutException $e) {
337
-
// Невозможно получить блокировку...
335
+
// Невозможно получить блокировку...
338
336
} finally {
339
337
$lock->release();
340
338
}
341
339
342
340
Приведенный выше пример можно упростить, передав замыкание методу `block`. Когда замыкание передается этому методу, Laravel будет пытаться получить блокировку на указанное количество секунд и автоматически снимет блокировку, как только замыкание будет выполнено:
343
341
344
342
Cache::lock('foo', 10)->block(5, function () {
345
-
// Блокировка получена после ожидания максимум 5 секунд...
343
+
// Блокировка получена после ожидания максимум 5 секунд...
> Если вам интересно, где разместить свой собственный код драйвера кеша, то вы можете создать пространство имен `Extensions` в своем каталоге `app`. Однако имейте в виду, что Laravel не имеет жесткой структуры приложения, и вы можете организовать свое приложение в соответствии со своими предпочтениями.
0 commit comments