13 comments

  • basilgohar a day ago ago

    This is interesting, but it seems it's more useful for WordPress sites with the specific WPDB logic they have.

    It'd be more interesting if, instead, they could intercept PDO queries and add profiling to those, for example.

    Still, free code is free code. I don't want to look down upon it, just that the utility for my case is limited.

    • zerodeux a day ago ago

      The wpdb logic is an addon and only triggers if wpdb is found. Phptop might still be useful in the general case to quickly and cheaply find CPU hotspots.

      Nowadays it would be necessary to also show the various Curl/API calls because they're so omnipresent and impactfull on PHP sites (as wait time and not CPU time)... But AFAIK it's pretty hard to intercept them in a generic way.

  • nchmy a day ago ago

    Its not evident to me what this does... It says that it "prints per query and average metrics", but it seems to just output some extremely generic stats. Does "query" actually mean request here?

    I see there's a wordpress-specific wpdb mechanism - though it just seems to report total time spent on queries, and the slowest query. Surely something like Query Monitor is a far better tool for that?

    A tool that everyone should be aware of and using is php-spx - its absolutely glorious for performance profiling/investigation. xhgui is similar, but bulkier and (in my experience) less accurate/insightful.

    https://github.com/NoiseByNorthwest/php-spx

    • xd a day ago ago

      From a quick skim of the repo it looks to be injecting phptop_hook.php into any call to a php file with auto_prepend_file in php.ini. phptop_hook.php generates some stats on how long it took the php file to process and stores this via error_log() which can then be queried with the perl script phptop.

    • zerodeux a day ago ago

      Author here.

      "Query" does mean "HTTP request" in the summary. It's reported as "Hits" in the stats. Sorry for the incoherent wording ...

      The SQL/wpdb support was added afterwards, and it shows because data is only collected but not used/displayed in the histograms.

      Phptop is wayyy simpler and not even comparable to SPX, but you can install it in a few sec, use it 5min, uninstall it, and solve lots of common perf problem. That was my use case (it'as ancient code and I barely use it nowadays).

      • nchmy a day ago ago

        Thanks for the clarification!

        What do you use now?

    • BafS a day ago ago

      I can't praise SPX enough, it has saved my ass multiple times. The UI is great too.

  • 127dot1 a day ago ago

    Is it compatible with nginx+php-fpm stack?

    • rthnbgrredf a day ago ago

      Yes, but php-fpm already has this kind of information for you: https://www.inanzzz.com/index.php/post/6cn7/formatting-php-f...

      You can print the time, cpu and memory usage per request and build metrics based on these outputs. This can be done in any major cloud, with open source tooling and even with simple linux coretuils. One tool to visualize such metrics is Grafana.

    • zerodeux a day ago ago

      It is compatible with Nginx+FPM. It won't use the PHP-FPM specific logs (and thus does not impose any specific value from you for the access.format PHP-FPM setting). But it has to figure out where your app's error log is.

    • tarjei_huse a day ago ago

      Looks likely. The server part of it is just a PHP-hook.

      • joshstrange a day ago ago

        Yeah, from a brief glance at this, it just adds a file that runs on every request which logs out to the php error log and then there’s another script that can parse that error log.

        • zerodeux a day ago ago

          Exactly.

          I'm the author, it's funny this thing pops up now, it was written +15 years ago and is barely maintained (but AFAKI still works).

          The metrics collected are close to those from PHP-FPM (CPU user/sys, clock time, peak memory) + the wpdb hook because I had to profile lots of WP.

          The most interesting part is the 'phptop' tool itself which actually parse the logs and make some useful histograms.

          Its main force I think it's that it's very lightweight (500 lines of Perl, fast and efficient regexes), works everywhere (very old Perl will do), and gives results instantly. My usecase used to be : apt install phptop, wait (at least) 1min for data collection, get useful histogram. It's also obviously very easy to uninstall.

          It does pollute the error log, but it's the most simple and universal data sink I could think of, and well it's a hack in the end.

          Patches still welcome anyway :).