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