forked from deployphp/deployer
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcachetool.php
98 lines (78 loc) · 2.65 KB
/
cachetool.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/*
Add to your _deploy.php_
```php
require 'contrib/cachetool.php';
```
## Configuration
- **cachetool** *(optional)*: accepts a *string* with the unix socket or ip address to php5-fpm. If `cachetool` is not given, then the application will look for a `cachetool.yml` file and read the configuration from there.
```php
set('cachetool', '/var/run/php5-fpm.sock');
// or
set('cachetool', '127.0.0.1:9000');
```
You can also specify different cachetool settings for each host:
```php
host('staging')
->set('cachetool', '127.0.0.1:9000');
host('production')
->set('cachetool', '/var/run/php5-fpm.sock');
```
By default, if no `cachetool` parameter is provided, this recipe will fallback to the global setting.
## Usage
Since APC/APCu and OPcache deal with compiling and caching files, they should be executed right after the symlink is created for the new release:
```php
after('deploy:symlink', 'cachetool:clear:opcache');
// or
after('deploy:symlink', 'cachetool:clear:apc');
// or
after('deploy:symlink', 'cachetool:clear:apcu');
```
## Read more
Read more information about cachetool on the website:
http://gordalina.github.io/cachetool/
*/
namespace Deployer;
set('cachetool', '');
set('cachetool_args', '');
set('bin/cachetool', function () {
if (!test('[ -f {{release_path}}/cachetool.phar ]')) {
run("cd {{release_path}} && curl -sLO https://github.com/gordalina/cachetool/releases/latest/download/cachetool.phar");
}
return '{{release_path}}/cachetool.phar';
});
set('cachetool_options', function () {
$options = get('cachetool');
$fullOptions = get('cachetool_args');
if (strlen($fullOptions) > 0) {
$options = "{$fullOptions}";
} elseif (strlen($options) > 0) {
$options = "--fcgi={$options}";
}
return $options;
});
desc('Clearing APC system cache');
task('cachetool:clear:apc', function () {
run("cd {{release_path}} && {{bin/php}} {{bin/cachetool}} apc:cache:clear system {{cachetool_options}}");
});
/**
* Clear opcache cache
*/
desc('Clearing OPcode cache');
task('cachetool:clear:opcache', function () {
run("cd {{release_path}} && {{bin/php}} {{bin/cachetool}} opcache:reset {{cachetool_options}}");
});
/**
* Clear APCU cache
*/
desc('Clearing APCu system cache');
task('cachetool:clear:apcu', function () {
run("cd {{release_path}} && {{bin/php}} {{bin/cachetool}} apcu:cache:clear {{cachetool_options}}");
});
/**
* Clear file status cache, including the realpath cache
*/
desc('Clearing file status and realpath caches');
task('cachetool:clear:stat', function () {
run("cd {{release_path}} && {{bin/php}} {{bin/cachetool}} stat:clear {{cachetool_options}}");
});