With a recent Debian upgrade came an upgrade to XDEBUG, a software that can be used for optimizing, debugging and profiling code. I use especially the profiling function, that in combination with kcachegrind shows how long the code is spending on each function, which in turn helps me decide how much time to spend optimizing which function.
Prerequisites for this HowTo are Debian 11 with an Apache 2 Webserver, PHP 7.4.
Install XDEBUG
apt install php-xdebug
Edit the confinguration file
nano /etc/php/*/mods-available/xdebug.ini
Paste the following contents if you want the cachegrind files to appear under /xdebug on the server
[xdebug]zend_extension=xdebug.so
xdebug.output_dir = "/xdebug"
xdebug.profiler_enable_trigger = true
#leave empty if you do not want to specify the value
#xdebug.trigger_value = "1"xdebug.mode = profile
xdebug.start_with_request = trigger
Housekeeping
Restart the server, create the necessary directories.
mkdir /xdebug
chmod 777 /xdebug
service apache2 restart
Profiling
Afterwards, you can add a (GET or POST) parameter to your request to initiate the profiling:
https://ursrig.com/?XDEBUG_PROFILE=true
With the new version this also works:
https://ursrig.com/?XDEBUG_TRIGGER