PHPackages                             luofei614/socketlog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. luofei614/socketlog

ActiveLibrary[API Development](/categories/api)

luofei614/socketlog
===================

debug tool for api , ajax,wechat ,v2.3

2.2.0(10y ago)1.1k1.6k296[21 issues](https://github.com/luofei614/SocketLog/issues)[6 PRs](https://github.com/luofei614/SocketLog/pulls)MITPHPPHP &gt;=5.4.0

Since Dec 8Pushed 5y ago99 watchersCompare

[ Source](https://github.com/luofei614/SocketLog)[ Packagist](https://packagist.org/packages/luofei614/socketlog)[ RSS](/packages/luofei614-socketlog/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

一，简介
----

[](#一简介)

SocketLog 是一款高效的、探针式的服务器端程序调试和分析工具。

将“探针”引入到目标项目后，SocketLog 会通过在服务端启动的一个 WebSocket 服务，将程序执行过程中收集到的调试信息推送到客户端。 客户端会通过一个 Chrome 插件将调试信息打印到浏览器的 Console 中，这些信息包括程序的运行时间、吞吐率、内存消耗；PHP 的 Error、warning、notice 信息；程序执行的 SQL 语句以及对 SQL 语句的 explain 等等。

SocketLog 使用 PHP 和 NodeJs 开发，是 FirePHP 和 ChromePHP 的替代者，特别适合用于调试 Ajax 方式发起的请求和 API 项目。

### 1、使用场景举例：

[](#1使用场景举例)

**用 SocketLog 来做微信开发调试。**

举一个常见的场景：你在做微信 API 开发的时候，是否遇到了 API 有 bug，微信只提示“该公众账号暂时无法提供服务，请稍候再试” ？

我们根本不知道 API 出了什么问题，由于不能打印信息，只能通过日志来排查，这种方式的调试效率实在是太低了。

现在有了 SocketLog 就不一样了，我们可以知道微信给 API 传递了哪些参数，程序有错误我们也能看见错误信息。

[![微信调试](./screenshots/weixin.png)](./screenshots/weixin.png)

### 2、SocketLog 的用途：

[](#2socketlog-的用途)

- **API bug 调试**

    - 正在运行的 API 有 bug，不能使用 var\_dump() 进行调试，因为会影响 client 的调用。 将日志写到文件，查看也不方便，特别是带调用栈或大数据结构的文件日志，查看起来十分困难。
    - 是时候让 SocketLog 大显身手了，它通过 WebSocket 将调试日志打印到浏览器的 Console 中，查看起来非常方便。
- **其他用途**

    - 你还可以用它来分析开源程序、分析 SQL 性能、结合 PHP Taint 分析程序漏洞。

### 3、文件和目录简要说明：

[](#3文件和目录简要说明)

```
├── chrome        ：Chrome 插件的源代码目录。
├── chrome.crx    ：Chrome 插件的安装包文件，手动安装方法见下文。
├── demo.php      : Demo 示例文件。
├── Dockerfile
├── composer.json
├── README.md
├── php
│   ├── slog.function.php ：探针文件，在需要发送日志的时候，载入这个文件，然后调用其中的函数 slog() 即可。
│   └── slog.php          ：收集调试日志的函数类库文件，需要在探针文件中载入这个类库。
├── screenshots           ：README.md 本文档中需要的示例图片。
└── server
    ├── bin
    │   └── socketlog-server：当前目录下启动 WebSocket 服务的文件。
    ├── config.json
    ├── index.html          : 申请 client_id 的页面。
    ├── index.js            ：WebSocket 服务的入口文件。
    ├── node_modules        ：Node 所需的组件目录。
    └── package.json

```

### 4、效果展示：

[](#4效果展示)

针对一个开源的 Web 项目，我们想基于它做二次开发。如果能在浏览网站的时候，可以从浏览器的 Console 中知道程序都做了些什么，这对二次开发将十分有帮助。

下面的效果图显示，在浏览 discuz 程序时，Console 中打印出了：

- 程序的运行时间、吞吐率和内存消耗信息。
- 程序的 warning，notice 等错误信息。
- 当前页面执行了哪些 SQL 语句，以及执行 SQL 语句的调用栈信息。

[![打印浏览 discuz 时执行的 SQL 语句](./screenshots/discuz.png)](./screenshots/discuz.png)

二，安装与使用
-------

[](#二安装与使用)

### 1、安装：

[](#1安装)

- 1，客户端，安装 Chrome 插件。

    - 方法一，在线安装：

        打开 [Chrome 网上应用店](https://chrome.google.com/webstore/category/extensions?hl=zh-CN)，搜索 SocketLog ，然后点击 “添加至 Chrome” 完成安装。如果不能正常访问 Chrome 网上应用店，可以尝试如下的手动安装方法。
    - 方法二，手动安装：

        在 GitHub 上下载 [chrome.crx](https://github.com/luofei614/SocketLog)，打开浏览器地址栏并输入：chrome://extensions，将chrome.crx 拖入打开的页面即可。
- 2，服务端，安装 Socket 服务并启动。

    > （请确保你的环境已经安装了 NodeJs）

    - 方法一，npm 方式安装：
        - 全局安装 ```
            $ npm install -g socketlog-server
            ```
        - 局部安装 (切换到目标项目所在目录) ```
            $ npm install socketlog-server

            ```
        - 启动服务 ```
            ## 普通方式运行：
            $ socketlog-server

            ## 如果想让服务在后台运行：
            $ socketlog-server > /dev/null &
            ```
    - 方法二，源码方式安装：
        - 根据实际情况选定目录（例如，在目标项目所在目录下） ```
            ## 下载项目代码或者 clone
            $ git clone https://github.com/luofei614/SocketLog.git
            ```
        - 启动服务 ```
            ## 请注意实际项目的 index.js 文件的路径
            $ node server/index.js
            ```
- 3，php 探针文件：

    ```
