iqlearning / pulse
Code Igniter 4 package for monitoring application health and performance. Porting from Laravel to Code Igniter 4 framework. Kudos to Laravel community for the original package.
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/iqlearning/pulse
Requires
- php: >=7.4
- codeigniter4/framework: ^4.0
Requires (Dev)
- codeigniter4/devkit: ^1.3
README
CodeIgniter 4 package for monitoring application health and performance. This is a port of Laravel Pulse to the CodeIgniter 4 framework.
Requirements
- PHP 7.4+
- CodeIgniter 4.0+
Installation
-
Install via Composer:
composer require iqlearning/pulse
-
Run Migrations:
Run the migrations to create the necessary tables (
pulse_entries,pulse_values,pulse_aggregates).php spark migrate -n Iqlearning\Pulse
Configuration
1. Routes
Add the Pulse routes to your app/Config/Routes.php file (or a specific route group).
// app/Config/Routes.php $routes->group('pulse', ['namespace' => 'CodeIgniter\Controllers'], function($routes) { $routes->get('/', 'PulseController::index'); $routes->get('check', 'PulseController::check'); // For Scheduled Tasks / Cron $routes->get('stats', 'PulseController::stats'); // Dashboard Data });
Note: Make sure the namespace matches where PulseController is located (currently CodeIgniter\Controllers).
2. Filters (Middleware)
To record request times and system stats during requests, enable the filter. The package registers the pulse alias automatically.
Add it to your app/Config/Filters.php:
public $globals = [ 'before' => [ // ... ], 'after' => [ 'pulse' => ['except' => ['pulse/*']], // Exclude pulse own routes // ... ], ];
3. Environment Variables
You can configure the data retention policy in your .env file:
# Data retention in days (default: 1) pulse.metricsTTL = 1
Usage
Dashboard
Visit /pulse in your browser to view the dashboard.
Scheduled Recording
To capture system stats (CPU, Memory) and perform cleanup of old data, you should set up a cron job or scheduled task to call the check endpoint periodically (e.g., every minute).
Via crontab:
* * * * * /path/to/php /path/to/project/public/index.php pulse/check
Or via URL:
* * * * * curl http://your-domain.com/pulse/check
Monitoring Features
- System Stats: CPU and Memory usage monitoring (Server support: Windows via
wmic, limited Linux support). - Slow Requests: Tracks requests taking longer than 1 second.
- Slow Queries: Tracks database queries taking longer than 50ms.
- Exceptions: Logs application exceptions with stack traces.
- Request Duration: detailed breakdown of request performance.
License
MIT License.