Docker containers that runs xhgui (web interface for xhprof). Very useful for PHP profiling.
100K+
Docker Hub: https://hub.docker.com/r/edyan/xhgui
Docker containers that runs xhgui (which needs mongodb and PHP).
It's based on :
It's made for development purposes. You need to find the right version for your project.
Use 5.6 for PHP 5.6 projects and 7.2 / 7.4 for PHP 7.x projects. Just make sure you have the
mongodb extension enabled on your main PHP container.
To use it in an integrated environment, try Stakkr
To make it work, you need to link it to an existing PHP environment. Example via docker-compose.yml :
The Docker Compose configuration is different for Compose versions 2 and 3:
version: '2'
services:
xhgui:
image: edyan/xhgui:php7.2
# I need to access xhgui
ports:
- "9000:80"
php:
hostname: php
command: /usr/bin/php -S 0.0.0.0:80 -t /var/www
image: edyan/php:7.2 # That image contains mongodb extension from PECL
# To have xhgui sources mount xhgui's volumes
volumes_from: [xhgui]
ports:
- "8000:80"
volumes:
- "./src:/var/www"
The volumes_from is no longer supported in the Docker Compose version 3 syntax. We have to define a volume for xhgui in the global section of the config file and reference it in each of the services:
version: '3'
volumes:
xhgui:
services:
xhgui:
image: edyan/xhgui:php7.2
# I need to access xhgui
ports:
- "9000:80"
volumes:
- xhgui:/usr/local/src
php:
hostname: php
command: /usr/bin/php -S 0.0.0.0:80 -t /var/www
image: edyan/php:7.2 # That image contains mongodb extension from PECL
# To have the new mounted volumes as well as the default volumes of xhgui (its source code)
ports:
- "8000:80"
volumes:
- ./src:/var/www
- xhgui:/usr/local/src
You need to set an environment variable to define the right mongodb server
and then include the prepared profiler to your file, for example src/index.php:
<?php
// Call the profiler
putenv('XHGUI_MONGO_HOST=mongodb://xhgui:27017');
require_once('/usr/local/src/xhgui/external/header.php');
// Run your code
function test_xhgui()
{
$data = [];
for ($i = 0; $i < 5000; $i++) {
$data[] = $i * $i;
sort($data);
}
}
test_xhgui();
Finally, launch the environment with : docker-compose up --force-recreate.
Then call http://localhost:8000/index.php in your browser and get reports
from http://localhost:9000.
XHGUI_MONGO_HOST default to mongodb://127.0.0.1:27017, used in XHGui config file.MONGO_PORT default to 27017PHP_WEBSERVER_PORT default to 80A docker-compose file is available to do some tests:
$ mkdir src
$ echo '<?php putenv("XHGUI_MONGO_HOST=mongodb://xhgui"); require_once("/usr/local/src/xhgui/external/header.php"); $a=[]; for($i=0; $i<10000; $i++){ $a[]=$i; } sort($a); echo "Done";' > src/index.php
$ docker-compose -f docker-compose.sample.yml up --force-recreate -d
Now open http://localhost:8000/index.php to read the new file created. Then http://localhost:9000 to see the report.
Clean :
$ docker-compose -f docker-compose.sample.yml down
Content type
Image
Digest
Size
141.5 MB
Last updated
over 5 years ago
docker pull edyan/xhgui