2017 © Pedro Peláez
 

library tideways

tideways for swoft

image

extraswoft/tideways

tideways for swoft

  • Thursday, June 14, 2018
  • by masixun71
  • Repository
  • 1 Watchers
  • 0 Stars
  • 119 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 10 Versions
  • 3867 % Grown

The README.md

, (*1)

简介

本项目基于github上的swoft开源项目进行组件开发,扩展了一个swoft-tideways组件, tideways 是一个PHP性能被动分析工具,对php7支持良好,并且是非侵入式的监控 提供了火焰图,调用图和调用的完善记录, (*2)

环境强制要求

  1. 必须PHP 7.1 +
  2. swoole版本必须大于等于4.0,并且按照swoft官方要求的要求安装
  3. mongodb.so
  4. tideaways.so, 安装方法可点击这里,官方文档非常详细

使用步骤

1.php.ini文件配置

   [mongodb]
   extension=mongodb.so
   [tideways]
   extension=tideways.so
   ;不需要自动加载,在程序中控制就行
   tideways.auto_prepend_library=0
   ;频率设置为100,在程序调用时能改
   tideways.sample_rate=100

2.安装中文版的xhgui

   git clone https://github.com/laynefyc/xhgui-branch.git
   cd xhgui-branch
   php install.php

3.mongodb服务端增加索引 (xhprof是我们使用的库名,可根据需要变更)

    $ mongo
    > use xhprof
    > db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
    > db.results.ensureIndex( { 'profile.main().wt' : -1 } )
    > db.results.ensureIndex( { 'profile.main().mu' : -1 } )
    > db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
    > db.results.ensureIndex( { 'meta.url' : 1 } )

4.增加一个xhgui的nginx配置文件,root 指向我们刚刚安装的xhgui-branch下面的webroot目录

注:xhgui支持php56,php7-fpm,需要启动一个fpm
注:若是在本地配置,记得配置hosts文件
注:若报错cache目录不可写,请给cache目录权限修改为777
    server {
        listen       80;
        server_name  local-xhgui.xxxx.com;
        root  /apps/webroot/production/xhgui-branch/webroot;

        location / {
            index  index.php;
            if (!-e $request_filename) {
                rewrite . /index.php last;
            }
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

5.给你的swoft项目引入组件

    composer require extraswoft/tideways

6.在config/beans 下面添加一个tideways.php文件

    <?php
    use ExtraSwoft\Tideways\Middleware\TidewaysMiddleware;

    return [
        'ExtraSwoft\\Tideways\\Middleware\\TidewaysMiddleware' => [
            'class' => TidewaysMiddleware::class,
            'root' => '${config.tideways.root}',
            'start' => '${config.tideways.start}',
            'host' => '${config.tideways.host}',
            'db' => '${config.tideways.db}',
        ]
    ];

7.在config/properties/app.php 文件中添加如下信息

   'tideways' => [
           'root' => env('TIDEWAYS_ROOT'),
           'start' => env('TIDEWAYS_START'),
           'host' => env('TIDEWAYS_DB_HOST'),
           'db' => env('TIDEWAYS_DB_DB'),
       ] 

8.在.env 中添加如下信息

TIDEWAYS_ROOT 指向你安装的xhgui的路径
TIDEWAYS_START 确定你当前环境是否开启
TIDEWAYS_DB_HOST 配置mongodb
TIDEWAYS_DB_DB 使用的库
    #tideways
    TIDEWAYS_ROOT=/apps/webroot/production/xhgui-branch
    TIDEWAYS_START=true
    TIDEWAYS_DB_HOST=mongodb://127.0.0.1:27017
    TIDEWAYS_DB_DB=xhprof

9.分析采样率的修改

在xhgui的config/config.default.php中,可设置采样命中次数

具体可参照下面例子, (*3)

'profiler.enable' => function() {
    // url 中包含debug=1则百分百捕获
    if(!empty($_GET['debug'])){
        return True;
    }else{
        // 1%采样
        return rand(1, 100) === 42;
    }
}
return rand(1, 100) === 42; 
为1%的采样率,改成return True;则标识每次都采样

效果图

image, (*4)

问题

1.现在tideways提供了sql的分析,但是mysql使用的是swoole的mysql客户端,无法记录, (*5)

The Versions

14/06 2018

dev-master

9999999-dev

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

14/06 2018

v0.0.0.9

0.0.0.9

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

14/06 2018

v0.0.0.8

0.0.0.8

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

30/05 2018

v0.0.0.7

0.0.0.7

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

29/05 2018

v0.0.0.6

0.0.0.6

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

29/05 2018

v0.0.0.5

0.0.0.5

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole xhprof tideways swoft

29/05 2018

v0.0.0.4

0.0.0.4

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole xhprof tideways swoft

29/05 2018

v0.0.0.3

0.0.0.3

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole xhprof tideways swoft

29/05 2018

v0.0.0.2

0.0.0.2

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft

29/05 2018

v0.0.0.1

0.0.0.1

tideways for swoft

  Sources   Download

Apache-2.0

The Requires

 

php swoole tideways swoft