phpstorm-stubs/newrelic/newrelic.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
*/