原文地址:Integrating Chrome’s Clockwork into your web-app。本文对原文进行翻译,总结如何手动集成Clockwork。
Clockwork它能够与任何服务端平台、框架一起工作。下面我们将阐述如何将它集成到我们的php-app上。
安装
通过composer进行安装:
- 添加“itsgoingd/clockwork”: “dev-master” 到你的composer.json文件中。eg。
- 执行composer update。
或者你也可以通过clone https://github.com/itsgoingd/clockwork/,可能需要翻墙。然后使用传统的加载库的方法来加载它。
集成Clockwork
它的最好的放置位置是在你的应用程序的根目录中,在控制器、路由的周围。header()命令需要在发送其他信息之前运行,它将告诉Chrome的Clockwork标签,从服务器请求什么文件来获取统计信息。
最后两行的 resolveRequest()和storeRequest() 需要在web应用程序完成所有伟大的工作之后运行。reslove()函数将在每个提供的DataSoure上被调用。这将解析并保存您的计时、日志、查询等。
1 | // 这将发送header,除非你是缓冲输出 |
之后会创建一个json文件(文件名字貌似是:x-Clockwork-id)到上面提到的 “some/path/”中,这个路径由我们自己创建。我项目中设置的路径是/data/data/clockwork。
1 | define('CLOCKWORK_LOG_PATH', '/data/data/clockwork'); |
在页面加载后,Chrome的Clockwork扩展会收集X-Clockwork头信息,并向服务器发送一个新的请求,使用x-Clockwork-id来获取生成的文件。例如:如果X-Clockwork-Id 是1387208177.8923.1394938488的话,那么Chrome’s Clockwork 扩展将会发送一个请求到你的服务器上,他的url是: /__clockwork/1387208177.8923.1394938488。
可以通过监听“/ __clockwork /[*:id]”来处理这一请求,并进行如下操作:
1 | $storage = new FileStorage("/some/path/"); |
像Klein或AltoRouter这样的路由器可以采用上面的语法并返回请求id。或者您可以手动解析$ _SERVER[‘ REQUEST_URI ‘]来获取id。文件存储为您做剩下的工作
生成自定义DataSoure
教程上的代码如下:
1 | class YourCustomDataSource extends DataSource |
我们项目中的代码:
1 |
|
