# 前端开发利器sync_browser
基于tp5浏览器自动刷新测试工具
思路来源于[http://www.browsersync.cn/](http://www.browsersync.cn/)
实现方式是采用socket通知机制
![image](https://github.com/skj198568/images/raw/master/browser_sync/browser_sync.gif)
基于nodejs的浏览器自动刷新,现已有[http://www.browsersync.cn/](http://www.browsersync.cn/),该工具实现了代码修改浏览器自动刷新功能。据说能提高约30%的开发效率,但是必须得安装nodejs,node比较耗资源,而且对于php开发人员来说维护起来比较麻烦。故开发php版本的同步刷新工具。基于workerman+tp5,算是使用tp5框架的php开发者的一个福音吧,tp3可以对应的仿照实现。
## 使用方式
项目根目录执行
```
php think
```
执行结果
```
......
Available commands:
browser_sync 监听服务器文件,当文件修改时,自动同步刷新浏览器
build Build Application Dirs
clear Clear runtime file
help Displays help for a command
list Lists commands
......
```
查看帮助
```
php think browser_sync --help
```
执行结果
```
Usage:
browser_sync [options]
Options:
-f, --file_types=FILE_TYPES 监听变化的文件后缀名,分号分割,例如:html;js;css;php [default: "html;js;css;php"]
-d, --dirs=DIRS 监听web根目录下变化的文件夹,分号分割,例如:application;public [default: "application;public"]
-p, --port=PORT socket监听的端口,注意防火墙的设置 [default: "8000"]
-c, --command=COMMAND start/启动,start-d/启动(守护进程),status/状态, restart/重启,reload/平滑重启,stop/停止 [default: "start"]
-h, --help Display this help message
-V, --version Display this console version
-q, --quiet Do not output any message
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
```
默认方式执行,或监听default中的定义
```
php think browser_sync
```
守护进程方式执行
```
php think browser_sync -c start-d
```
仅仅监听php文件
```
php think browser_sync -f php
```
修改监听的端口,比如改为6000
```
php think browser_sync -p 6000
```
上述工作做完之后,手工刷新下浏览器,则在浏览器下方自动拼接相关js刷新代码
```
<script type="text/javascript">
var ws = new WebSocket('ws://yourdomain:8000');
ws.onclose = function(){
window.location.reload();
};
</script>
```
如浏览器不需要刷新,则在url后拼接
```
url?browser_sync=0
```
恢复刷新,则拼接
```
url?browser_sync=1
```
这时,修改任意被监听的代码,则浏览器会自动刷新。