454 lines
19 KiB
PHP
454 lines
19 KiB
PHP
<?php
|
|
/**
|
|
* Add a custom parameter to the current web transaction with the specified value.
|
|
*
|
|
* For example, you can add a customer's full name from your customer database. This parameter is shown in any
|
|
* transaction trace that results from this transaction.
|
|
*
|
|
* If the value given is a float with a value of NaN, Infinity, denorm or negative zero, the behavior of this function is
|
|
* undefined. For other floating point values, New Relic may discard 1 or more bits of precision (ULPs) from the given
|
|
* value.
|
|
*
|
|
* This function will return true if the parameter was added successfully.
|
|
*
|
|
* Warning: If you are using your custom parameters/attributes in Insights, avoid using any of Insights' reserved words
|
|
* for naming them.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-custom-param
|
|
*
|
|
* @param string $key
|
|
* @param bool|float|integer|string $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_add_custom_parameter($key, $value) {}
|
|
|
|
/**
|
|
* Add user-defined functions or methods to the list to be instrumented . API equivalent of the
|
|
* newrelic.transaction_tracer.custom setting.
|
|
*
|
|
* Internal PHP functions cannot have custom tracing. functionName can be formatted either as "functionName"
|
|
* for procedural functions, or as "ClassName::method" for methods. Both static and instance methods will be
|
|
* instrumented if the method syntax is used.
|
|
*
|
|
* This function will return true if the tracer was added successfully.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-custom-tracer
|
|
*
|
|
* @param string $functionName
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_add_custom_tracer($functionName) {}
|
|
|
|
/**
|
|
* Mark current transaction as a background job or a web transaction.
|
|
*
|
|
* If the flag argument is set to true or omitted, the current transaction is marked as a background job. If flag is set
|
|
* to false, then the transaction is marked as a web transaction.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-bg
|
|
*
|
|
* @param bool $flag [optional]
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_background_job($flag = true) {}
|
|
|
|
/**
|
|
* Enables the capturing of URL parameters for displaying in transaction traces. This will override the
|
|
* newrelic.capture_params setting.
|
|
*
|
|
* Note: Until version 2.1.3 of the PHP agent, this function was called newrelic_enable_params. Although this alias
|
|
* still exists, it is deprecated and will be removed in the future.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-capture-params
|
|
*
|
|
* @param bool $enable [optional]
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_capture_params($enable = true) {}
|
|
|
|
/**
|
|
* Adds a custom metric with the specified name and value.
|
|
*
|
|
* Values saved are assumed to be milliseconds, so "4" will be stored as ".004" in our system. Your custom metrics can
|
|
* then be used in custom dashboards and custom views in the New Relic user interface. Name your custom metrics with
|
|
* a Custom/ prefix (for example, Custom/MyMetric). This will make them easily usable in custom dashboards. If the value
|
|
* is NaN, Infinity, denorm or negative zero, the behavior of this function is undefined. New Relic may discard 1 or
|
|
* more bits of precision (ULPs) from the given value.
|
|
*
|
|
* This function will return true if the metric was added successfully.
|
|
*
|
|
* Warning: Avoid creating too many unique custom metric names. New Relic limits the total number of custom metrics you
|
|
* can use (not the total you can report for each of these custom metrics). Exceeding more than 2000 unique custom
|
|
* metric names can cause automatic clamps that will affect other data.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-custom-metric
|
|
*
|
|
* @param string $metricName
|
|
* @param float $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_custom_metric($metricName, $value) {}
|
|
|
|
/**
|
|
* Prevents the output filter from attempting to insert the JavaScript for page load timing (sometimes referred to as
|
|
* real user monitoring or RUM) for this current transaction.
|
|
*
|
|
* This function will always return true.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-rum-disable
|
|
*
|
|
* @return true
|
|
*/
|
|
function newrelic_disable_autorum() {}
|
|
|
|
/**
|
|
* @deprecated use newrelic_capture_params() instead
|
|
*/
|
|
function newrelic_enable_params() {}
|
|
|
|
/**
|
|
* Stop recording the web transaction immediately.
|
|
*
|
|
* Usually used when a page is done with all computation and is about to stream data (file download, audio or video
|
|
* streaming, etc.) and you don't want the time taken to stream to be counted as part of the transaction. This is
|
|
* especially relevant when the time taken to complete the operation is completely outside the bounds of your
|
|
* application. For example, a user on a very slow connection may take a very long time to download even small files,
|
|
* and you wouldn't want that download time to skew the real transaction time.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-eot
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_end_of_transaction() {}
|
|
|
|
/**
|
|
* Causes the current transaction to end immediately.
|
|
*
|
|
* Despite being similar in name to newrelic_end_of_transaction above, this call serves a very different purpose.
|
|
* newrelic_end_of_transaction simply marks the end time of the transaction but takes no other action. The transaction
|
|
* is still only sent to the daemon when the PHP engine determines that the script is done executing and is shutting
|
|
* down. This function on the other hand, causes the current transaction to end immediately, and will ship all of the
|
|
* metrics gathered thus far to the daemon unless the ignore parameter is set to true. In effect this call simulates
|
|
* what would happen when PHP terminates the current transaction. This is most commonly used in command line scripts
|
|
* that do some form of job queue processing. You would use this call at the end of processing a single job task, and
|
|
* begin a new transaction (see below) when a new task is pulled off the queue.
|
|
* Normally, when you end a transaction you want the metrics that have been gathered thus far to be recorded. However,
|
|
* there are times when you may want to end a transaction without doing so. In this case use the second form of the
|
|
* function and set ignore to true.
|
|
*
|
|
* This function will return true if the transaction was successfully ended and data was sent to the New Relic daemon.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-end-txn
|
|
*
|
|
* @param bool $ignore [optional]
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_end_transaction($ignore = false) {}
|
|
|
|
/**
|
|
* Returns the JavaScript string to inject at the very end of the HTML output for page load timing (sometimes referred
|
|
* to as real user monitoring or RUM).
|
|
*
|
|
* If includeTags omitted or set to true, the returned JavaScript string will be enclosed in a <script> tag.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-rum-footer
|
|
*
|
|
* @param bool $includeTags [optional]
|
|
*
|
|
* @return string
|
|
*/
|
|
function newrelic_get_browser_timing_footer ($includeTags = true) {}
|
|
|
|
/**
|
|
* Returns the JavaScript string to inject as part of the header for page load timing (sometimes referred to as real
|
|
* user monitoring or RUM).
|
|
*
|
|
* If includeTags are omitted or set to true, the returned JavaScript string will be enclosed in a <script> tag.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-rum-header
|
|
*
|
|
* @param bool $includeTags
|
|
*
|
|
* @return string
|
|
*/
|
|
function newrelic_get_browser_timing_header($includeTags = true) {}
|
|
|
|
/**
|
|
* Do not generate Apdex metrics for this transaction.
|
|
*
|
|
* This is useful when you have either very short or very long transactions (such as file downloads) that can skew your
|
|
* Apdex score.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-ignore-apdex
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_ignore_apdex() {}
|
|
|
|
/**
|
|
* Do not generate metrics for this transaction.
|
|
*
|
|
* This is useful when you have transactions that are particularly slow for known reasons and you do not want them
|
|
* always being reported as the transaction trace or skewing your site averages.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-ignore-transaction
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_ignore_transaction() {}
|
|
|
|
/**
|
|
* Sets the name of the transaction to the specified name.
|
|
*
|
|
* This can be useful if you have implemented your own dispatching scheme and want to name transactions according to
|
|
* their purpose rather than their URL.
|
|
*
|
|
* This function will return true if the transaction name was successfully changed. If false is returned, please check
|
|
* the agent log for more information.
|
|
*
|
|
* Call this function as early as possible. It will have no effect, for example, if called after the JavaScript footer
|
|
* for page load timing (sometimes referred to as real user monitoring or RUM) has been sent.
|
|
* Avoid creating too many unique transaction names. This will make your graphs less useful, and you may run into limits
|
|
* we set on the number of unique transaction names per account. It also can slow down the performance of your
|
|
* application.
|
|
*
|
|
* Example: Naming transactions
|
|
* You have /product/123 and /product/234. If you generate a separate transaction name for each, then New Relic will
|
|
* store separate information for these two transaction names.
|
|
* Instead, store the transaction as /product/*, or use something significant about the code itself to name the
|
|
* transaction, such as /Product/view. The total number of unique transaction names should be less than 1000. Exceeding
|
|
* that is not recommended.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-name-wt
|
|
*
|
|
* @param string $name
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_name_transaction($name) {}
|
|
|
|
/**
|
|
* Report an error at this line of code, with a complete stack trace.
|
|
*
|
|
* The first form of the call was added in agent version 2.6 and should be used for reporting exceptions. Only the
|
|
* exception for the last call is retained during the course of a transaction.
|
|
*
|
|
* Agent version 4.3 enhanced this form to use the exception class as the category for grouping within the New Relic APM
|
|
* user interface. The exception parameter must be a valid PHP Exception class, and the stack frame recorded in that
|
|
* class will be the one reported, rather than the stack at the time this function was called. When using this form,
|
|
* if the error message is empty, a standard message in the same format as created by Exception::__toString() will be
|
|
* automatically generated.
|
|
*
|
|
* function newrelic_notice_error(string $message, Exception $exception)
|
|
*
|
|
* With the second form of the call, only the message is used. This set of parameters allows newrelic_notice_error to be
|
|
* set as an error handler with the internal PHP function set_error_handler(). With the second form of the call, only
|
|
* the message is used.
|
|
*
|
|
* function newrelic_notice_error(integer $unused1, string $message, $unused2, $unused3, $unused4)
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-notice-error
|
|
*
|
|
* @param string|integer $messageOrUnused [optional]
|
|
* @param Exception|string $exceptionOrMessage [optional]
|
|
* @param string $unused2 [optional]
|
|
* @param integer $unused3 [optional]
|
|
* @param mixed $unused4 [optional]
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_notice_error($messageOrUnused = null, $exceptionOrMessage = null, $unused2 = null, $unused3 = null, $unused4 = null) {}
|
|
|
|
/**
|
|
* Records a New Relic Insights custom event.
|
|
*
|
|
* For more information, see Inserting custom events with the PHP agent. The attributes parameter is expected to be an
|
|
* associative array: the keys should be the attribute names (which may be up to 255 characters in length), and the
|
|
* values should be scalar values: arrays and objects are not supported.
|
|
*
|
|
* This API call was introduced in version 4.18 of the agent.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-record-custom-event
|
|
*
|
|
* @param string $name
|
|
* @param array $attributes
|
|
*
|
|
* @return void
|
|
*/
|
|
function newrelic_record_custom_event($name, array $attributes) {}
|
|
|
|
/**
|
|
* Sets the name of the application to name.
|
|
*
|
|
* The string uses the same format as newrelic.appname and can set multiple application names by separating each with a
|
|
* semi-colon (;). However, be aware of the restriction on the application name ordering as described for that setting.
|
|
* The first application name is the primary name. You can also specify up to two extra application names. (However, the
|
|
* same application name can only ever be used once as a primary name.) Call this function as early as possible. It will
|
|
* have no effect if called after the JavaScript footer for page load timing (sometimes referred to as real user
|
|
* monitoring or RUM) has been sent.
|
|
*
|
|
* If you use multiple licenses, you can also specify a license key along with the application name. An application can
|
|
* appear in more than one account and the license key controls which account you are changing the name in. If you do
|
|
* not wish to change the license and wish to use the third variant, simply set the license key to the empty string
|
|
* ("").
|
|
*
|
|
* The xmit flag is new in PHP agent version 3.1. Usually, when you change an application name, the agent simply
|
|
* discards the current transaction and does not send any of the accumulated metrics to the daemon. However, if you want
|
|
* to record the metric and transaction data up to the point at which you called this function, you can specify a value
|
|
* of true for this argument to make the agent send the transaction to the daemon. This has a very slight performance
|
|
* impact as it takes a few milliseconds for the agent to dump its data. By default this parameter is false.
|
|
*
|
|
* Consider setting the application name in a file loaded by PHP's auto_prepend_file INI setting. This function returns
|
|
* true if it succeeded or false otherwise.
|
|
*
|
|
* This function will return true if the application name was successfully changed.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-set-appname
|
|
*
|
|
* @param string $name
|
|
* @param string $license [optional] defaults to ini_get('newrelic.license')
|
|
* @param bool $xmit [optional]
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_set_appname($name, $license = null, $xmit = false) {}
|
|
|
|
/**
|
|
* Sets user attributes (custom parameters).
|
|
*
|
|
* As of release 4.4, calling newrelic_set_user_attributes("a", "b", "c"); is equivalent to calling:
|
|
* newrelic_add_custom_parameter("user", "a"); newrelic_add_custom_parameter("account", "b");
|
|
* newrelic_add_custom_parameter("product", "c"); Previously, the three parameter strings were added to collected
|
|
* browser traces. All three parameters are required, but may be empty strings. * This function will return true if the attributes were added successfully.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-set-user-attributes
|
|
*
|
|
* @param string $user
|
|
* @param string $account
|
|
* @param string $product
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_set_user_attributes($user, $account, $product) {}
|
|
|
|
/**
|
|
* If you have ended a transaction before your script terminates (perhaps due to it just having finished a task in a job
|
|
* queue manager) and you want to start a new transaction, use this call.
|
|
*
|
|
* This will perform the same operations that
|
|
* occur when the script was first started. Of the two arguments, only the application name is mandatory. However, if
|
|
* you are processing tasks for multiple accounts, you may also provide a license for the associated account. The
|
|
* license set for this API call will supersede all per-directory and global default licenses configured in INI files.
|
|
*
|
|
* This function will return true if the transaction was successfully started.
|
|
*
|
|
* @link https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-api#api-start-txn
|
|
*
|
|
* @param string $appName
|
|
* @param string $license [optional] defaults to ini_get('newrelic.license')
|
|
*
|
|
* @return bool
|
|
*/
|
|
function newrelic_start_transaction($appName, $license = null) {}
|
|
|
|
/**
|
|
* Records a datastore segment.
|
|
*
|
|
* Records a datastore segment. Datastore segments appear in the Breakdown table and Databases tab of the Transactions
|
|
* page in the New Relic UI.
|
|
* This function allows an unsupported datastore to be instrumented in the same way as the PHP agent automatically
|
|
* instruments its supported datastores.
|
|
*
|
|
* @since 7.5.0.199
|
|
* @see https://docs.newrelic.com/docs/agents/php-agent/php-agent-api/newrelic_record_datastore_segment
|
|
*
|
|
* @param callable $func The function that should be timed to create the datastore segment.
|
|
* @param array $parameters An associative array of parameters describing the datastore call
|
|
* <p>The supported keys in the $parameters array are as follows:</p>
|
|
* <table>
|
|
* <tr valign="top">
|
|
* <th>Key</th>
|
|
* <th>Description</th>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>product
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Required. The name of the datastore product being used: for example, `MySQL` to indicate that the segment
|
|
* represents a query against a MySQL database.</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>collection
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Optional. The table or collection being used or queried against.</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>operation
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>
|
|
* <p>Optional. The operation being performed: for example, `select` for an SQL SELECT query, or `set` for a Memcached
|
|
* set operation.</p>
|
|
* <p>While operations may be specified with any case, New Relic suggests using lowercase to better line up with the
|
|
* operation names used by the PHP agent's automated datastore instrumentation.</p>
|
|
* </td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>host
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Optional. The datastore host name.</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>portPathOrId
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Optional. The port or socket used to connect to the datastore.</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>databaseName
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Optional. The database name or number in use.</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>query
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>
|
|
* <p>Optional. The query that was sent to the server.</p>
|
|
* <p>For security reasons, this value is only used if you set `product` to a supported datastore. This allows the agent
|
|
* to correctly obfuscate the query. The supported product values (which are matched in a case insensitive manner) are:
|
|
* `MySQL`, `MSSQL`, `Oracle`, `Postgres`, `SQLite`, `Firebird`, `Sybase`, and `Informix`.</p>
|
|
* </td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>inputQueryLabel
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>Optional. The name of the ORM in use (for example: `Doctrine`).</td>
|
|
* </tr>
|
|
* <tr valign="top">
|
|
* <td>inputQuery
|
|
* <p><em>string</em></p>
|
|
* </td>
|
|
* <td>
|
|
* <p>Optional. The input query that was provided to the ORM.</p>
|
|
* <p>For security reasons, and as with the `query` parameter, this value will be ignored if the product is not
|
|
* a supported datastore.</p>
|
|
* <p></p>
|
|
* </td>
|
|
* </tr>
|
|
* </table>
|
|
*
|
|
* @return mixed|false The return value of $callback is returned. If an error occurs, false is returned, and
|
|
* an error at the E_WARNING level will be triggered
|
|
*/
|