Docker上的Tideways

这是什么?

在Docker上运行的WordPress中安装PHP性能分析工具Tideways的记录。

虽然文章讲述了WordPress独特的主题项目,但是如果换个角度来看,通常的PHP项目也应该可以同样安装。

背景 – (context)

我有机会对PHP强大的WordPress专属模板进行性能调优。

我在考虑使用性能分析工具来调查瓶颈问题,所以查询了相关工具。我发现在PHP中,Tideways似乎是主要的选择。

我能够在Docker上运行的WordPress中输出Tideways报告,因此我会记录方法。

把以下句子用中文化:「ポイント」

    • グラフを出力するためにgraphvizをインストール

 

    • xhprofをビルド

/var/wwwにtidewaysの管理画面(xhprof-html)をホスト

用法 fǎ)

使用以下代码将要解析的PHP代码包围起来

tideways_xhprof_enable();

// ここに解析したいメインの処理

$data = tideways_xhprof_disable();
$filename = '/tmp/xhprof/' . intval(microtime(true)) . mt_rand(1, 10000) . '.xhprof';
file_put_contents($filename, serialize($data));

执行PHP并创建解析文件

执行(1)中的PHP代码,会在/tmp/xhprof目录下生成解析文件。

3. 使用xhprof-html进行可视化

访问托管的xhprof-html,选择第(2)步创建的xhprof文件以检查性能。

可以通过以下链接访问:
http://localhost:8000/xhprof/?dir=/tmp/xhprof

构建方法

为了WordPress的自定义主题项目,我使用direnv设置了主题目录的路径。

export THEME_REPO=~/path/to/my-theme
version: '3'

services:
  db:
    image: mysql:5.7
    platform: linux/x86_64
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    build:
      dockerfile: wordpress/Dockerfile
    platform: linux/x86_64
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DEBUG: true
    volumes:
      - ${THEME_REPO}:/var/www/html/wp-content/themes/my-theme

volumes:
    db_data:

虽然有些混乱,但我正在Dockerfile中定义tideways的安装。

FROM wordpress:latest

RUN apt-get update && apt-get install wget git graphviz -y
RUN cd /tmp && git clone https://github.com/tideways/php-xhprof-extension
RUN cd /tmp/php-xhprof-extension && phpize && ./configure && make && make install
RUN echo 'extension=tideways_xhprof.so' >> /usr/local/etc/php/conf.d/tideways.ini
RUN echo 'tideways.auto_prepend_library=0' >> /usr/local/etc/php/conf.d/tideways.ini
RUN mkdir /tmp/xhprof && chmod 777 /tmp/xhprof/

COPY wordpress/xhprof-html.conf /etc/apache2/conf-enabled/xhprof-html.conf
RUN cd /var/www && git clone https://github.com/sters/xhprof-html.git

我们使用包含在WordPress官方映像中的Apache来托管管理界面,但可以将其切换为Nginx。

↓适用于主机的Apache配置文件

<IfModule alias_module>
    Alias /xhprof /var/www/xhprof-html
</IfModule>
bannerAds