2019/07/04追記
- PHP ProbeのWarningについての原因と対策
きっかけ
進行中のプロジェクトに影響を与えないよう既存システムの現状を把握したい。
そのため、GitHub(Enterprise)
のリポジトリからソースをcloneし、ローカルでツールを利用し分析してみる。
ローカル環境は、構築/変更/削除が比較的楽なDocker
で構築。
対象システムはLalavel
をベースにしているため、Laradock
を選択。
標準でBlackfire
が用意されているため、これを有効にしプロファイリングしてみる。
Google先生に聞いてみたが、Laradock
+Blackfire
で良い感じのヒットがなかったため、ここに認めてみる。
なお、ここでは諸事情によりソースのcloneは行わず、defaultのwelcomeページのプロファイリングまでとする。
環境
- MacbookPro:Retina:13-inch:Early 2015
- 2.9 GHz Intel Core i5
- 16 GB 1867 MHz DDR3
- Intel Iris Graphics 6100 1536 MB
- 512GB PCIe-based flash storage
- macOSSierra:10.12.6-x86_64
前提条件
事前準備
Homebrew
Docker(edge)
❯ brew cask install docker-edge
※ brew cask install docker
でもOK
参考にしたサイト
Laradock
- LaravelとLaradockを使ったチームでの開発環境を用意する vol.1 ~Laradock設定編~ - Qiita ( LaravelとLaradockを使ったチームでのphpプロジェクトの始め方 1~Laradock設定編~ )
Blackfire
参考にしたサイトとの差分
- (vol.1)ディレクトリ名
-your
+test
- (vol.1)laradockのenv
-APP_CODE_PATH_HOST=../
+APP_CODE_PATH_HOST=../test_laravel_project
-DATA_PATH_HOST=~/.laradock/data
+DATA_PATH_HOST=~/.laradock_test_project/data
-INSTALL_BLACKFIRE=false
+INSTALL_BLACKFIRE=true
- (vol.1)setup.sh
-cp -f conf/.laradock-env ../laradock-your_project/.env
+cp -f conf/.laradock-env ../laradock_test_project/.env
- (オリジナル).env
※ログインした状態の Installation - Blackfire ページ Client Id
Client Token
Server Id
Server Token
を、それぞれコピー&ペースト
※ここで編集するのは個人アカウント利用のため
-BLACKFIRE_CLIENT_ID=<client_id>
-BLACKFIRE_CLIENT_TOKEN=<client_token>
+BLACKFIRE_CLIENT_ID=********-****-****-****-************
+BLACKFIRE_CLIENT_TOKEN=****************************************************************
-BLACKFIRE_SERVER_ID=<server_id>
-BLACKFIRE_SERVER_TOKEN=<server_token>
+BLACKFIRE_SERVER_ID=********-****-****-****-************
+BLACKFIRE_SERVER_TOKEN=****************************************************************
- (オリジナル)php-fpmのWarning対策
&& rm /tmp/xhprof.tar.gz \
+ && COPY ./xhprof.ini /usr/local/etc/php/conf.d \
;fi
-COPY ./xhprof.ini /usr/local/etc/php/conf.d
###########################################################################
- (vol.1)dockerの起動
-docker-compose up --build -d nginx postgres redis workspace
+docker-compose up --build -d nginx postgres redis workspace blackfire
- (vol.1)
docker-compose ps
+laradock_blackfire_1 blackfire-agent Up 8707/tcp
- (vol.2)Docker操作に使うコマンド
-docker-compose up -d nginx postgres workspace redis
+docker-compose up -d nginx postgres workspace redis blackfire
- (オリジナル)Laravelのインストール(※バージョン指定の場合のみ)
-composer create-project --prefer-dist laravel/laravel ./
+composer create-project --prefer-dist laravel/laravel ./ "5.5.*"
- (vol.2)Laravelの設定
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
+DB_CONNECTION=pgsql
+DB_HOST=postgres
+DB_PORT=5432
-DB_DATABASE=homestead
-DB_USERNAME=homestead
+DB_DATABASE=default
+DB_USERNAME=default
- (vol.2)Laravel設定ファイルの配布準備
-cp -f conf/.**laravel**-env ../your_laravel_project/.env
+cp -f conf/.**laravel**-env ../test_laravel_project/.env
- (Blackfire)
-2. サーバにblackfire agentのインストール
※Laradockでインストールするため不要
- (vol.2)Blackfire Companionデザイン
その他
- (オリジナル)php-fpmのWarning対策の事象
PHP Warning: PHP Startup: Unable to load dynamic library 'tideways.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/tideways.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
※無条件で 'tideways.so' 利用状態になっているため。Laradock
の issue 参照。
- PHP ProbeのWarning
2019/07/04追記
php-fpm
のProbeが古かった様です・・・再構築して解消
(※これから構築する方は最新がインストールされるので問題なし)
参考
最後に
内容ボリュームが盛りだくさんなため、ここでは元記事の差分のみ記載しました。
スライドモード
も試してみたかったため、やたらと区切った分読みにくいかもしれません。
誰かの参考になればと思いUPしましたが、とりあえず自分用の作業記録として残しておきます。
別途、Laradock
の issue でGraphviz
のインストールが出来るようにする提案がありますが、先行してそのPRに倣ってphpDocumentor
も導入してみたいと思っています。
その他、静的解析ツール群も入れてみたいと思っていますが、Laravel
公式がStyleCI
を導入している点が悩ましい・・・無料枠・・・
Plan Bとして、有志の方がPHP-CS-Fixer
でStyleCI
と同等のルールを作成しているので、そちらを利用したいと思っています。
ここまで、老頭児(残滓)プログラマーがお伝えいたしました。
現場からは以上です。