承接 ryunosuke/php-web-debugger 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ryunosuke/php-web-debugger

Composer 安装命令:

composer require ryunosuke/php-web-debugger

包简介

web debugging tool

README 文档

README

Description

フレームワークに依存せず、リクエスト中の各種情報を収集します。 要するに php-debugbar みたいなやつです。

主な機能は下記です。

  • iframe で埋め込まれるので本来の画面を汚さない
  • Error/Exception の表示
  • Request(GET/POST/COOKIE/FILES/SESSION) の表示・編集
  • Database のクエリ履歴
  • Ajax 履歴
  • 実行時間とピークメモリ・タイムライン
  • 任意ログ出力機能
  • PRG パターン時のリダイレクト抑止
  • ファイルパスの関連付け実行

ScreenShot

  • ScreenShot
  • ScreenShot

Install

{
    "require": {
        "ryunosuke/php-web-debugger": "dev-master"
    }
}

Usage

下記を「リクエスト時に必ず通る箇所」に記述するだけです。 共通 include や フレームワークの Bootstrap などがいいでしょう。

このライブラリは Web に特化しているので 共通 include の場合は Web 以外の時に読み込まれるときに注意しましょう(とは言えあまり実害はないはずです)。 レスポンスをフックする処理があるので、リクエストの最後の方ではなく最初の方に記述するのが無難です。

オプションは省略してもそれなりに動きますが、細かな設定を行いたい場合は引数で指定してください。 詳細はソースを参考にしてください。

$debugger = new \ryunosuke\WebDebugger\Debugger([
    /** ひっかけるレスポンスヘッダー */
    'rewrite'      => [
        'content-type 正規表現' => fn($contents) => "書き換えたコンテンツ",
    ],
    /** bool PRG パターンの抑止フラグ */
    'stopprg'      => true,
    /** string ひっかけるパス */
    'hookpath'     => 'webdebugger-action',
    /** string 無視するパス */
    'ignore'       => '#\.(ico|map)$#',
    /** string リクエストファイル置き場 */
    'workdir'      => sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'wd-working',
    /** string パスを開く URL */
    'opener'       => 'http://localhost:9090',
    'opener_query' => 'project=X&remote=true',
]);
$debugger->initialize([
    \ryunosuke\WebDebugger\Module\Ajax::class        => [/* 固有のモジュールオプション */],
    \ryunosuke\WebDebugger\Module\Error::class       => [/* 固有のモジュールオプション */],
    \ryunosuke\WebDebugger\Module\Server::class      => [/* 固有のモジュールオプション */],
    \ryunosuke\WebDebugger\Module\Performance::class => [/* 固有のモジュールオプション */],
    \ryunosuke\WebDebugger\Module\Log::class         => [/* 固有のモジュールオプション */],
])->start();

Database の Master/Slave など、同じモジュールを複数の設定で使いたい場合は下記のようにします。

$debugger->initialize([
    \ryunosuke\WebDebugger\Module\Doctrine::getInstance('Master')->initialize(['connection' => $masterConnection]),
    \ryunosuke\WebDebugger\Module\Doctrine::getInstance('Slave')->initialize(['connection' => $slaveConnection]),
])->start();

要するに初期化済みインスタンスの配列を渡すだけです。

まとめると初期化の方法は下記の2通りです。

  • クラス名 => オプション 形式で渡す
  • 初期化済みモジュールインスタンスを渡す

なお、上記は混在化です。

module

上記のような各種情報を集めるクラスを「モジュール」と呼びます。 モジュールは AbstractModule さえ継承していれば任意に実装・追加が可能です。

rewrite

rewrite について補足すると、前提として body にデバッグ用 html/js/css を差し込んで表示しているため、content-type が text/html でないとアイコン群が表示されません。 例えば JSON な WebAPI や Ajax 処理を作ったとして、その URL を直に叩いてもデバッガは表示されません。

このオプションを指定するとマッチした Content-Type のときに強制的に text/html とみなし、コンテンツも html に書き換えます。 視認性のため、元のコンテンツは整形表示され、pre として埋め込まれます。

それなりにアグレッシブな挙動であり、本来と異なる結果になりうることもあるため、なにかおかしな点があったら無効にして様子を見てみてください。

opener

opener について補足すると、エラーログのトレースやログの呼び出し箇所など、各モジュールでは随所に「ファイルパス:行番号」という情報が埋め込まれます。 opener を設定しておくと、画面クリック時にその URL に file, line パラメータ付きでリクエストを飛ばせます。 opener_query も設定しておくとクエリパラメータも一緒に飛びます。

飛び先で file, line に基づいて phpstorm などで指定ファイル・行番号を開くように設定しておけばそのファイルをその行番号で開くようにできます。 要するに IDE ジャンプを http で模したものです。

bin ディレクトリにリファレンス実装があります。

License

MIT

ryunosuke/php-web-debugger 适用场景与选型建议

ryunosuke/php-web-debugger 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 388 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 08 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ryunosuke/php-web-debugger 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ryunosuke/php-web-debugger 我们能提供哪些服务?
定制开发 / 二次开发

基于 ryunosuke/php-web-debugger 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 388
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-08-04