hemant kumawat
hemant kumawat

Reputation: 131

how to perform an heavy database related task in laravel that consume more than 30 seconds

I'm developing a binary multilevel marketing system in Laravel, at the registration time there we have to perform a task to entries for many types of bonus for each parent nodes of a new user. This task is time-consuming.

No one user want to see buffering and task taking more than 30 second that is not the right way.

I want to run this mechanism in the background and send a success message that your account created successfully.

Upvotes: 0

Views: 271

Answers (2)

Anmup Giri
Anmup Giri

Reputation: 170

either implement laravel job and queues or use https://github.com/spatie/async. you can invoke sub processes to make your task

use Spatie\Async\Pool;

$pool = Pool::create();

foreach ($things as $thing) {
    $pool->add(function () use ($thing) {
        // Do a thing
    })->then(function ($output) {
        // Handle success
    })->catch(function (Throwable $exception) {
        // Handle exception
    });
}

$pool->wait();

Upvotes: 2

Bram Verstraten
Bram Verstraten

Reputation: 1547

You could use observers that trigger queued jobs.

After the user does an action on a model, the observers create queued jobs in the background. While the queue is being processed the user can continue working.

Upvotes: 6

Related Questions