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>