Skip to content

PHP connection pooling integration for Laravel's query builder and Eloquent

Notifications You must be signed in to change notification settings

mink/laravel-connection-pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Connection Pool

Build Status

Laravel Connection Pool allows you to take advantage of Laravel's query builder and Eloquent ORM in an asynchronous environment. Perform concurrent database operations through a familiar fluent interface without having to worry about locking contention, let alone what connection you are using.

Note: This package is a work in progress and is unsafe for use in production.

Requirements

  • PHP 7.4+ (CLI only)
  • Swoole PHP extension

Installation

composer require x/laravel-connection-pool

Usage

// concurrent operations
go(fn () => Server::where('terminated_at', '<=', now()->subMinutes(5))->delete());

go(function () {
    Session::where('active', true)->get()->each(function ($session) {
        //
    });
});

Swoole\Event::wait();
// run 100 SLEEP(1) queries at once, takes ~1s
for ($i = 0; $i < 100; $i++) {
    go(fn () => DB::statement('SELECT SLEEP(1)'));
}

Swoole\Event::wait();

About

PHP connection pooling integration for Laravel's query builder and Eloquent

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages