Esta ferramenta permite monitorar o desempenho e detectar vazamentos de memória, bem como comportamento inconsistente de desempenho do seu aplicativo ao longo do tempo.
Para criação de perfil básica, você pode usar um auxiliar de criação de perfil. O Profiling
permitirá que você crie um perfil entre chamadas de métodos start
e finish
.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profile = $ profiling -> finish ();
printf ( ' It took %.1f s to do something. ' , $ profile -> getDuration ());
O Profiling
é simples e não pode ser ativado e desativado facilmente. Portanto, um criador de perfil foi criado com a finalidade de criar perfis mais complexos codificados.
Solicite um criador de perfil como dependência e chame um método profile
nele.
namespace PetrKnap Profiler ;
function doSomething ( ProfilerInterface $ profiler ): string {
return $ profiler -> profile ( function (): string {
return ' something ' ;
})-> process ( fn ( ProfileInterface $ profile ) => printf (
' It took %.1f s to do something. ' ,
$ profile -> getDuration (),
));
}
Ele pode ser facilmente habilitado ou desabilitado por meio do DI , que fornece o Profiler
ou o NullProfiler
.
namespace PetrKnap Profiler ;
echo doSomething ( new Profiler ());
echo doSomething ( new NullProfiler ());
Se você precisar medir os valores atuais , basta chamar o método takeSnapshot
no Profiling
ou em um criador de perfil.
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start ();
// do something
$ profiling -> takeSnapshot ();
// do something more
$ profile = $ profiling -> finish ();
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Se você quiser automatizá-lo, tire um instantâneo do tick. Ou você pode usar um perfil em cascata mais prático.
Para maior precisão, você pode tirar instantâneos de cada N
tick .
declare (ticks= 2 ); // this declaration is important (N=2)
namespace PetrKnap Profiler ;
$ profiling = Profiling:: start (takeSnapshotOnTick: true );
( fn () => ' something ' )();
$ profile = $ profiling -> finish ();
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Isso resultará em um rastreamento de código muito detalhado , o que pode degradar o desempenho da aplicação monitorada.
O método profile
fornece um criador de perfil aninhado que pode ser usado para criação de perfil em cascata mais detalhada.
namespace PetrKnap Profiler ;
$ profile = ( new Profiler ())-> profile ( function ( ProfilerInterface $ profiler ): void {
// do something
$ profiler -> profile ( function (): void {
// do something more
});
});
printf ( ' There are %d memory usage records. ' , count ( $ profile -> getMemoryUsages ()));
Execute composer require petrknap/profiler
para instalá-lo. Você pode apoiar este projeto através de doações. O projeto está licenciado sob os termos da LGPL-3.0-or-later
.