Improving Plumber for TYPO3 Flow


Profiling applications based on TYPO3 Flow can become quite complex. With the framework doing a lot of the heavy lifting it can be hard to see where bottlenecks are and how your application and configuration influence performance.

To ease profiling Sebastian Kurfürst created Plumber and PhpProfiler, a toolset that hooks into Flow to record timing information and collect profiling data using XHProf if available. If you have never heard of Plumber, this presentation I gave during Inspiring Flow 2013 might be of interest…

Note: If the content of this post seems familiar to you… I think that is great, because you already read this page. Still read on, it contains some more details.

Plumber screenshot showing the timeline view
The Plumber timeline view comparing two runs

By now those packages had some issues due to changes in Flow that broke Plumber–and some shortcomings that were the result of how those packages were born.

Thus I decided–during the TYPO3 Flow performance code sprint we did in March–to work on Plumber and make it compatible with the current Flow codebase. Another task was to really make the two packages Plumber and PhpProfiler independent from each other, so that collecting data is possible on another machine than the one used for data analysis.

Doing this I also looked at some other (new) XHProf frontends for analyzing profiling data, and integrated support for two more (xhprof.io and xhgui) into Plumber.

While those changes have been merged (in my forks of Plumber and PhpProfiler), some more polishing and further updates to the documentation would be needed to call this "done done"–and of course everything should be merged back into the master branch.

Of course even some more ideas for features came up:

  • make the use of different backends configurable
  • import existing profiles into new analysis tools
  • enable "production mode" that can be left running on live servers
All this would provide for a toolset that can even be deployed on live servers to collect profiling data in production use, giving valuable insight into the bottlenecks of your application.

Call for Funding

The work done so far was financed out of my own pocket and as much as I would love to finish this up–I cannot afford to do that right now. To finish the remaining issues, clean up and integrate all that back into the original project, I estimate another day or two on top of the unpaid time I already spent in March.

I was wondering what to do about that, and then Martin Brüggemann told me about a new crowdfunding platform for open source software called catincanSo I decided to put up a project there, aptly named Improve profiling tools for TYPO3 Flow.

And everyone of you can now help me finish my work on Plumber! All you need to do is head over to the project proposal and pledge any amount you like. If the funding goal is reached, this will enable me to finish up the missing parts and I would top it off with a screen cast on using the tool.


Leave a reply

Karsten Dambekalns

Creative Code Engineer

Contact / Impressum