1# Zstd Extension for PHP
2
3[![Build Status](https://secure.travis-ci.org/kjdev/php-ext-zstd.png?branch=master)](https://travis-ci.org/kjdev/php-ext-zstd)
4[![Build status](https://ci.appveyor.com/api/projects/status/xfywqdyxa0nlwlps?svg=true)](https://ci.appveyor.com/project/kjdev/php-ext-zstd)
5
6This extension allows Zstandard.
7
8Documentation for Zstandard can be found at [» https://github.com/facebook/zstd](https://github.com/facebook/zstd).
9
10
11## Build from sources
12
13``` bash
14% git clone --recursive --depth=1 https://github.com/kjdev/php-ext-zstd.git
15% phpize
16% ./configure
17% make
18% make install
19```
20
21To use the system library
22
23``` bash
24% ./configure --with-libzstd
25```
26
27## Distribution binary packages
28
29### Fedora
30
31Fedora users can install the [» php-zstd](https://apps.fedoraproject.org/packages/php-zstd) package from official repository.
32
33``` bash
34dnf install php-zstd
35```
36
37### CentOS / RHEL
38
39CentOS / RHEL (and other clones) users can install the [» php-zstd](https://apps.fedoraproject.org/packages/php-zstd) package from [» EPEL](https://fedoraproject.org/wiki/EPEL) repository.
40
41``` bash
42yum install php-zstd
43```
44
45Other RPM packages of this extension, for other PHP versions, are available in [» Remi's RPM repository](https://rpms.remirepo.net/).
46
47
48## Configration
49
50zstd.ini:
51
52```
53extension=zstd.so
54```
55
56## Constant
57
58Name                           | Description
59-------------------------------| -----------
60ZSTD\_COMPRESS\_LEVEL\_MIN     | Minimal compress level value
61ZSTD\_COMPRESS\_LEVEL\_MAX     | Maximal compress level value
62ZSTD\_COMPRESS\_LEVEL\_DEFAULT | Default compress level value
63LIBZSTD\_VERSION\_NUMBER       | libzstd version number
64LIBZSTD\_VERSION\_STRING       | libzstd version string
65
66## Function
67
68* zstd\_compress — Zstandard compression
69* zstd\_uncompress — Zstandard decompression
70* zstd\_compress\_dict — Zstandard compression using a digested dictionary
71* zstd\_uncompress\_dict — Zstandard decompression using a digested dictionary
72
73### zstd\_compress — Zstandard compression
74
75#### Description
76
77string **zstd\_compress** ( string _$data_ [, int _$level_ = 3 ] )
78
79Zstandard compression.
80
81#### Pameters
82
83* _data_
84
85  The string to compress.
86
87* _level_
88
89  The level of compression (1-22).
90  (Defaults to 3, 0 for no compression)
91
92  A value smaller than 0 means a faster compression level.
93  (Zstandard library 1.3.4 or later)
94
95#### Return Values
96
97Returns the compressed data or FALSE if an error occurred.
98
99
100### zstd\_uncompress — Zstandard decompression
101
102#### Description
103
104string **zstd\_uncompress** ( string _$data_ )
105
106Zstandard decompression.
107
108> Alias: zstd\_decompress
109
110#### Pameters
111
112* _data_
113
114  The compressed string.
115
116#### Return Values
117
118Returns the decompressed data or FALSE if an error occurred.
119
120
121### zstd\_compress\_dict — Zstandard compression using a digested dictionary
122
123#### Description
124
125string **zstd\_compress\_dict** ( string _$data_ , string _$dict_ )
126
127Zstandard compression using a digested dictionary.
128
129> Alias: zstd\_compress\_usingcdict
130
131#### Pameters
132
133* _data_
134
135  The string to compress.
136
137* _dict_
138
139  The Dictionary data.
140
141#### Return Values
142
143Returns the compressed data or FALSE if an error occurred.
144
145
146### zstd\_uncompress\_dict — Zstandard decompression using a digested dictionary
147
148#### Description
149
150string **zstd\_uncompress\_dict** ( string _$data_ , string _$dict_ )
151
152Zstandard decompression using a digested dictionary.
153
154> Alias: zstd\_dempress\_dict,
155> zstd\_unmpress\_usingcdict, zstd\_decompress\_usingcdict
156
157#### Pameters
158
159* _data_
160
161  The compressed string.
162
163* _dict_
164
165  The Dictionary data.
166
167#### Return Values
168
169Returns the decompressed data or FALSE if an error occurred.
170
171
172## Namespace
173
174```
175Namespace Zstd;
176
177function compress( $data [, $level = 3 ] )
178function uncompress( $data )
179function compress_dict ( $data, $dict )
180function uncompress_dict ( $data, $dict )
181```
182
183`zstd_compress`, `zstd_uncompress`, `zstd_compress_dict` and
184`zstd_uncompress_dict` function alias.
185
186## Streams
187
188Zstd compression and uncompression are available using the
189`compress.zstd://` stream prefix.
190
191## Examples
192
193```php
194// Using functions
195$data = zstd_compress('test');
196zstd_uncompress($data);
197
198// Using namespaced functions
199$data = \Zstd\compress('test');
200\Zstd\uncompress($data);
201
202// Using streams
203file_put_contents("compress.zstd:///patch/to/data.zstd", $data);
204readfile("compress.zstd:///patch/to/data.zstd");
205```
206