hyperf/docs/en/watcher.md
2020-12-29 15:11:48 +08:00

75 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Watcher (Hot Reload)
Since version `2.0` uses `BetterReflection` to collect the `abstract syntax tree (AST)` and `reflection data`, the scanning speed is much slower than version `1.1`.
> The first startup of application will be slower because there is no scan cache exists. Subsequent startup speeds will be improved, but because `BetterReflection` needs to be instantiated, the startup time is still relatively long.
In addition to solving the above startup problems, the `Watcher` component also handles restarting the application immediately after file modification.
> This component is only suitable for development environment, please use it with caution in production environment.
## Installation
```
composer require hyperf/watcher --dev
```
## Configuration
### Publish configuration
```bash
php bin/hyperf.php vendor:publish hyperf/watcher
```
### Configuration instructions
| Name | Default | Description |
|:--------------:|:----------------:|:------------------------------------------------------------------------------------:|
| driver | `ScanFileDriver` | The default polling file watcher |
| bin | `php` | The script used to start the service, for example: `php -d swoole.use_shortname=Off` |
| watch.dir | `app`, `config` | Watched directories |
| watch.file | `.env` | Wached files |
| watch.interval | `2000` | Polling interval (ms) |
## Driver support
| Driver | Notes |
| :----------------------------------: | :---------------------------------: |
| Hyperf\Watcher\Driver\ScanFileDriver | no extension required |
| Hyperf\Watcher\Driver\FswatchDriver | requires fswatch |
| Hyperf\Watcher\Driver\FindDriver | requires findMAC requires gfind |
### `fswatch` Installation
Mac:
```bash
brew install fswatch
```
Linux:
```bash
wget https://github.com/emcrisostomo/fswatch/releases/download/1.14.0/fswatch-1.14.0.tar.gz \
&& tar -xf fswatch-1.14.0.tar.gz \
&& cd fswatch-1.14.0/ \
&& ./configure \
&& make \
&& make install
```
## Startup
Because of the directory structure, the start command has to be run in the root directory of project.
```bash
php bin/hyperf.php server:watch
```
## Problems
- For now, there is a slight problem in the Alpine Docker environment, which will be improved in the future version.
- Deletion of files and modification of `.env` require a manual restart to take effect.
- Files in the `vendor` need to be automatically loaded in the form of classmap before they can be scanned. (i.e. execute `composer dump-autoload -o`)