1. Go to this page and download the library: Download perfbase/php-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
perfbase / php-sdk example snippets
use Perfbase\SDK\Perfbase;
// Check if the extension is available
if (Perfbase::isAvailable()) {
echo "Perfbase extension is ready!";
} else {
echo "Perfbase extension not found. Please install ext-perfbase.";
}
use Perfbase\SDK\Perfbase;
use Perfbase\SDK\Config;
// Create configuration
$config = Config::fromArray([
'api_key' => 'your_api_key_here',
'api_url' => 'https://ingress.perfbase.cloud', // Optional: defaults to this URL
]);
// Initialize Perfbase
$perfbase = new Perfbase($config);
// Start profiling a span
$perfbase->startTraceSpan('user_registration');
// Your application code here
registerUser($userData);
// Stop the span
$perfbase->stopTraceSpan('user_registration');
// Submit the trace data to Perfbase
$result = $perfbase->submitTrace();
use Perfbase\SDK\Perfbase;
use Perfbase\SDK\Config;
use Perfbase\SDK\FeatureFlags;
// Configure with custom settings
$config = Config::fromArray([
'api_key' => 'your_api_key_here',
'timeout' => 15,
'flags' => FeatureFlags::AllFlags, // Enable all profiling features
]);
$perfbase = new Perfbase($config);
// Start span with initial attributes
$perfbase->startTraceSpan('api_request', [
'endpoint' => '/api/v1/users',
'method' => 'POST',
'user_id' => '12345'
]);
// Add attributes during execution
$perfbase->setAttribute('request_size', '1024');
$perfbase->setAttribute('cache_hit', 'false');
try {
// Your application logic
$result = processApiRequest($request);
$perfbase->setAttribute('status', 'success');
$perfbase->setAttribute('response_size', (string) strlen($result));
} catch (Exception $e) {
$perfbase->setAttribute('status', 'error');
$perfbase->setAttribute('error_message', $e->getMessage());
} finally {
// Always stop the span
$perfbase->stopTraceSpan('api_request');
}
// Submit trace data
$result = $perfbase->submitTrace();
$perfbase = new Perfbase($config);
// Start multiple spans for different operations
$perfbase->startTraceSpan('database_operations');
$perfbase->startTraceSpan('cache_operations');
$perfbase->startTraceSpan('api_calls');
// Perform operations (can be in any order)
performDatabaseQuery();
$perfbase->stopTraceSpan('database_operations');
makeApiCall();
$perfbase->stopTraceSpan('api_calls');
accessCache();
$perfbase->stopTraceSpan('cache_operations');
// Submit all trace data
$result = $perfbase->submitTrace();
if ($perfbase->isExtensionAvailable()) {
// Extension is ready
}
if (Perfbase::isAvailable()) {
$perfbase = new Perfbase($config);
}
use Perfbase\SDK\Exception\PerfbaseExtensionException;
try {
$perfbase = new Perfbase($config);
} catch (PerfbaseExtensionException $e) {
// Extension not available - handle gracefully
error_log("Perfbase extension not available: " . $e->getMessage());
// Your application continues normally
}
// Submission failures are returned as SubmitResult, not thrown
$result = $perfbase->submitTrace();
if ($result->isRetryable()) {
// Transient failure — safe to retry later
} elseif ($result->isPermanentFailure()) {
// Non-retryable — check API key, payload, etc.
error_log("Permanent submission failure: " . $result->getMessage());
}
// Good
$perfbase->startTraceSpan('user_authentication');
$perfbase->startTraceSpan('database_user_lookup');
$perfbase->startTraceSpan('external_api_call');
// Avoid
$perfbase->startTraceSpan('function1');
$perfbase->startTraceSpan('temp_span');
// Test connectivity
$config = Config::fromArray([
'api_key' => 'your_api_key',
'timeout' => 30 // Increase timeout for testing
]);
// Get raw trace data for inspection
$traceData = $perfbase->getTraceData();
var_dump($traceData);
// Check extension status
var_dump(Perfbase::isAvailable());