PHP code example of speakol-ads / elastic-apm-php-agent
1. Go to this page and download the library: Download speakol-ads/elastic-apm-php-agent 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/ */
speakol-ads / elastic-apm-php-agent example snippets
$agent = new \PhilKra\Agent( [ 'appName' => 'demo' ] );
// start a new transaction or use an existing one
$transaction = $agent->startTransaction($trxName);
$agent->captureThrowable( new Exception(), [], $transaction );
$agent->send();
$trxName = 'GET /some/transaction/name';
// create the agent
$agent = new \PhilKra\Agent(['appName' => 'Demo with Spans']);
// start a new transaction
$transaction = $agent->startTransaction($trxName);
// create a span
$spans = [];
$spans[] = [
'name' => 'Your Span Name. eg: ORM Query',
'type' => 'db.mysql.query',
'start' => 300, // when did tht query start, relative to the transaction start, in milliseconds
'duration' => 23, // duration, in milliseconds
'stacktrace' => [
[
'function' => "\\YourOrMe\\Library\\Class::methodCall()",
'abs_path' => '/full/path/to/file.php',
'filename' => 'file.php',
'lineno' => 30,
'library_frame' => false, // indicated whether this code is 'owned' by an (external) library or not
'vars' => [
'arg1' => 'value',
'arg2' => 'value2',
],
'pre_context' => [ // lines of code leading to the context line
'',
'',
'// executing query below',
],
'context_line' => '$result = mysql_query("select * from non_existing_table")', // source code of context line
'post_context' => [// lines of code after to the context line
'',
'$table = $fakeTableBuilder->buildWithResult($result);',
'return $table;',
],
],
],
'context' => [
'db' => [
'instance' => 'my_database', // the database name
'statement' => 'select * from non_existing_table', // the query being executed
'type' => 'sql',
'user' => 'root', // the user executing the query (don't use root!)
],
],
];
// add the array of spans to the transaction
$transaction->setSpans($spans);
// Do some stuff you want to watch ...
sleep(1);
$agent->stopTransaction($trxName);
// send our transactions to te apm
$agent->send();
$trxName = 'Demo Simple Transaction';
$agent->startTransaction( $trxName );
// Do some stuff you want to watch ...
$agent->stopTransaction( $trxName );
$agent = new \PhilKra\Agent( [ 'appName' => 'example' ] );
$endpoint = 'https://acme.com/api/';
$payload = [ 'foo' => 'bar' ];
$trxName = sprintf('POST %s', $endpoint);
$client = new GuzzleHttp\Client();
// Start the Transaction
$agent->startTransaction( $trxName );
// Do the call via curl/Guzzle e.g.
$response = $client->request('POST', $endpoint, [
'json' => $payload
]);
// Stop the Transaction tracing, attach the Status and the sent Payload
$agent->stopTransaction( $trxName, [
'status' => $response->getStatusCode(),
'payload' => $payload,
] );
// Send the collected Traces to the APM server
$agent->send();