pmg / queue-profiling
Profile running queues with various libraries and SaaS products.
Installs: 8 766
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 11
Forks: 0
Open Issues: 1
Requires
- php: ~5.6|~7.0
- pmg/queue: ~3.0
Requires (Dev)
- blackfire/php-sdk: ~1.5
- phpunit/phpunit: ~5.4
Suggests
- blackfire/php-sdk: To profile queue message handlers with Blackfire.io
This package is auto-updated.
Last update: 2024-10-23 06:50:59 UTC
README
Provides a ProfilingConsumer
and set of handler decorators that can profile
messages once or while the queue is running via SIGUSR1
(or other) posix
signals.
Usage
Pick an appropriate handler for your setup.
PMG\Queue\Handler\BlackfireProfilingHandler
- Profile with blackfire.io
All profiling handlers are decorators, so you'll create a real message handler and decorate it with the profiling handler.
use PMG\Queue\Message; use PMG\Queue\ProfilingConsumer; use PMG\Queue\Handler\CallableHandler; use PMG\Queue\Handler\BlackfireProfilingHandler; $realHandler = new CallableHandler(function (Message $message) { // do stuff }); $profilingHandler = BlackfireProfilingHandler::createDefault($realHandler);
If you plan on forking new processes to handle messages with
PcntlForkingHandler
, decorate the profiling handler with it.
use PMG\Queue\Handler\PcntlForkingHandler; $forkingHandler = new PcntlForkingHandler($profilingHandler);
Instantiate a Consumer Like Normal
use PMG\Queue\ProfilingConsumer $consumer = new ProfilingConsumer($driver, $profilingHandler);
Enable or Disable Profiling or Let the Signal Handlers Take Care of It
// let the signal handler do their thing(s) $consumer->run('SomeQueue'); // or enable/disable profiling manually $consumer->enableProfiling(); $consumer->once('SomeQueue'); $consumer->disableProfiling(); $consumer->once('SomeQueue');