1. Go to this page and download the library: Download perftools/php-profiler library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
perftools / php-profiler example snippets
// Add this block inside some bootstrapper or other "early central point in execution"
try {
/**
* The constructor will throw an exception if the environment
* isn't fit for profiling (extensions missing, other problems)
*/
$profiler = new \Xhgui\Profiler\Profiler($config);
// The profiler itself checks whether it should be enabled
// for request (executes lambda function from config)
$profiler->start();
} catch (Exception $e){
// throw away or log error about profiling instantiation failure
}
$profiler->start(false);
// Config::create() will load config/config.default.php
// and then merge with config/config.php (if it exists).
$config = \Xhgui\Profiler\Config::create();
$profiler = new \Xhgui\Profiler\Profiler($config);
/** @var \Xhgui\Profiler\Profiler $profiler */
// start profiling
$profiler->enable($flags, $options);
// run program
foo();
// stop profiler
$profiler_data = $profiler->disable();
// send $profiler_data to saver
$profiler->save($profiler_data);
$profiler = new \Xhgui\Profiler\Profiler($config);
$profiler->start();
'save.handler' => \Xhgui\Profiler\Profiler::SAVER_STACK,
'save.handler.stack' => array(
'savers' => array(
\Xhgui\Profiler\Profiler::SAVER_UPLOAD,
\Xhgui\Profiler\Profiler::SAVER_FILE,
),
// if saveAll=false, break the chain on successful save
'saveAll' => false,
),
// subhandler specific configs
'save.handler.file' => array(
'filename' => '/tmp/xhgui.data.jsonl',
),
'save.handler.upload' => array(
'url' => 'https://example.com/run/import',
'timeout' => 3,
'token' => 'token',
),
'save.handler' => \Xhgui\Profiler\Profiler::SAVER_UPLOAD,
// Saving profile data by upload is only recommended with HTTPS
// endpoints that have IP whitelists applied.
'save.handler.upload' => array(
'url' => 'https://example.com/run/import',
// The timeout option is in seconds and defaults to 3 if unspecified.
'timeout' => 3,
// the token must match 'upload.token' config in XHGui
'token' => 'token',
),
'save.handler' => \Xhgui\Profiler\Profiler::SAVER_FILE,
'save.handler.file' => array(
// Appends jsonlines formatted data to this path
'filename' => '/tmp/xhgui.data.jsonl',
),
'save.handler' => \Xhgui\Profiler\Profiler::SAVER_MONGODB,
'save.handler.mongodb' => array(
'dsn' => 'mongodb://127.0.0.1:27017',
'database' => 'xhprof',
// Allows you to pass additional options like replicaSet to MongoClient.
// 'username', 'password' and 'db' (where the user is added)
'options' => array(),
// Allows you to pass driver options like ca_file to MongoClient
'driverOptions' => array(),
),
use Xhgui\Profiler\Profiler;
use Xhgui\Profiler\Saver\SaverInterface;
class StdOutSaver implements SaverInterface
{
public function isSupported()
{
return true;
}
public function save(array $data)
{
fwrite(STDOUT, json_encode($data));
}
}
//...
/** @var Profiler $profiler */
$profiler->setSaver(new StdOutSaver());
curl -sSfL https://github.com/tideways/php-xhprof-extension/archive/v4.1.6.tar.gz | tar zx
cd php-xhprof-extension-4.1.6/
phpize
./configure
make
make install
echo extension=/usr/local/lib/php/pecl/20160303/tideways.so | tee /usr/local/etc/php/7.1/conf.d/ext-tideways.ini
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.