Custom Segments
Monitor custom code blocks inside your application.
Last updated
Monitor custom code blocks inside your application.
Last updated
This is the most easy way to wrap a code block into a segment:
The code block inside the callback will be transparently executed, and your script will continue its execution normally. Inspector will works under the hood to profile execution performance.
Here is an example of how the segment will appear in the timeline:
As showed in the code example above a new segment is built with two input parameters:
Parameter | Required | Description |
type | YES | This is the master category of your segment |
label | NO | Human readable label or specific task's name that will be used as label during visualization. Otherwise |
Think about how database queries is reported. There is one master category like mysql
but each query has its own custom label that simply is an extract of the sql code.
mysql: master type
select * from table: task label
In this way you can mark toghether statements related to the same topic or service, using something like mysql
as type parameter and use the specific query string
as label for a better timeline visualization.
This also increase your ability to filter data in the dashboard.
What you return from the callback will be returned back by addSegment()
method:
You can use startSegment()
method on the Inspector instance to manually control the monitoring of a code block:
As you can see in the example above we use try/catch/finally
to be sure that your code block is monitored in a consistent way.
Or you can use the addSegment()
method that implements this strategy for you as seen above:
It may happen that you aren't able to wrap directly a specific statement, so it might be useful to add a segment after the task has been executed. Like the hook to listen the execution of database queries by an ORM.
When you hook the saved event, the query has already been executed.
In this case you can create the segment later passing the start time in the start()
method, and the duration in the end()
method, as shown in the example below:
If you are using a framework like Laravel or Symfony, you have to access the current Inspector instance to call the addSegment()
method. Check it out on their specific documetation: