Обробка даних з обмеженням часу за допомогою методів Laravel LazyCollection

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Ви коли-небудь стикалися з великими наборами даних, які потрібно обробити в обмежений час? У нашій статті ви дізнаєтеся, як LazyCollection в Laravel ефективно управляє обробкою даних, впроваджуючи тайм-аут для забезпечення продуктивності та цілісності даних

LazyCollection у Laravel пропонує зручні засоби для розумної обробки великих наборів даних, визначаючи чіткі тимчасові рамки. Функція обмеження часу запобігає безкінечній роботі операцій, забезпечуючи максимальну продуктивність у межах заданих обмежень.

Механізм таймауту оцінює тривалість обробки відносно вказаного часу, автоматично зупиняючи обробку, коли ліміт досягнуто:

use Illuminate\Support\LazyCollection;
 
$results = LazyCollection::times(INF)
    ->takeUntilTimeout(now()->addMinutes(3))
    ->each(function (int $item) {
        return expensive_computation($item);
    });

Існує кілька способів для ефективного проходження через набір даних з дотриманням часових обмежень. Використання генераторних функцій разом з механізмами таймауту створює ефективні процесингові канали для великих обробок:

use Illuminate\Support\LazyCollection;
use App\Models\Transaction;
 
$processed = LazyCollection::make(function () {
    $cursor = 0;
    while (true) {
        $batch = Transaction::where('id', '>', $cursor)
            ->orderBy('id')
            ->limit(500)
            ->get();
 
        if ($batch->isEmpty()) {
            break;
        }
 
        foreach ($batch as $transaction) {
            yield $transaction;
        }
 
        $cursor = $batch->last()->id;
    }
})
->takeUntilTimeout(now()->addMinutes(20))
->filter(function ($transaction) {
    return $transaction->requires_processing;
})
->each(function ($transaction) {
    $transaction->process();
})
->count();

Створення системи фінансової звітності демонструє практичні застосування таймаутів на різних етапах обробки. Цей підхід є дуже ефективним для робіт з пакетами, які повинні завершуватися в межах робочих годин, зберігаючи при цьому узгодженість даних і можливість проведення аудиту.

Функція таймауту безперешкодно інтегрується в наявну інфраструктуру Laravel, автоматично завершуючи обробку, коли час перевищено, без переривання частково виконаних операцій і без створення неузгодженого стану даних.

Популярні

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті