Why we refactor the pinpoint_c_agent (v0.1.x)
- Hard to support all php versions.
- Slow, v0.1.x version hooks all functions.
- Not support ZTS.
AOP base on zend_excuted_hook
AOP base on classloader (like java-classloaders)
Agent version | PHP5.5.x | PHP5.6.x | PHP7.x | php-zts |
---|---|---|---|---|
v0.1.x | ✔ | ✔ | ✔ | ✘ |
v0.2.x | ✘ | ✘ | ✔ | ✔ |
Framework | v0.1.x | v0.2.x |
---|---|---|
Laravel | ✔ | ✔ |
ThinkPHP | ✔ | ✔ |
EasySwoole | ✘ | ✘ |
Note
- We are trying to support PHP asynchrnous Framework.Such as Workerman and EasySwoole
- If your php application not support composer(such as woredpress,phpwind etc),the only choise is v0.1.x.
v0.2.x > v0.1.x
✔: Not block user's application.
✘: Block user's application: php-fpm/apache should be restart
Functional | v0.1.x | v0.2.x |
---|---|---|
1.Update plugins(CRUD) | ✘ | ✔ How to ? |
2.Update pinpoint collector | ✘ | ✔ |
3.Update pinpiont_php.so(pinpoint.so) | ✘ | ✘ |
Test Scene
Test Object: PHPMYAdmin
URL: http://dev-mysql-phpmyadmin/db_structure.php?server=1&db=testDB
Plugins Amount: 4
Hooked Times: 30
Test Result
Case | MTT |
---|---|
phpmyadmin without pinpoint | 387.28ms |
phpmyadmin with pinpoint-php v0.1 | 511.46ms |
phpmyadmin with pinpoint-php v0.2 | 398.26ms |
MTT: Mean RTT Time
By the way,pinpoint is an APM system, not a performance enhancement system. Loss can't avoiding from now on.
As composer is widedly used, v0.2.x is our long-time support version, v0.1.x could be obsoleted in future. While, we could fix some fatal error into v0.1.x.