Session pooling maintains multiple SAP B1 sessions for high-concurrency scenarios, preventing bottlenecks when many requests hit simultaneously.
- High-traffic applications with concurrent SAP requests
- Queue workers processing many jobs in parallel
- API endpoints serving multiple simultaneous users
For most applications, the default single-session approach is sufficient.
SAP_B1_POOL_ENABLED=true// config/sap-b1.php
'pool' => [
'enabled' => true,
'warmup_on_boot' => true,
'connections' => [
'default' => [
'min_size' => 2,
'max_size' => 10,
'idle_timeout' => 600,
'wait_timeout' => 30,
],
],
'algorithm' => 'round_robin',
],| Algorithm | Best For |
|---|---|
round_robin |
Even distribution across sessions |
least_connections |
Balancing load based on usage |
lifo |
Cache locality optimization |
use SapB1\Facades\SapB1;
// Sessions are automatically acquired and released
$response = SapB1::get('BusinessPartners');
// Check if pool is active
if (SapB1::isUsingPool()) {
$stats = SapB1::getPoolStats();
}# Pool status and statistics
php artisan sap-b1:pool status
# Pre-create sessions
php artisan sap-b1:pool warmup --count=5
# Remove all sessions
php artisan sap-b1:pool drain
# Clean expired sessions
php artisan sap-b1:pool cleanup
# List sessions
php artisan sap-b1:pool sessionsuse SapB1\Events\SessionAcquired;
use SapB1\Events\SessionReleased;
use SapB1\Events\PoolWarmedUp;
use SapB1\Events\PoolSessionExpired;Pool state can be stored in Redis or database. Redis is recommended for multi-server deployments.
Next: Circuit Breaker