Asynchronous esi:include filter for PHP 7.1+
Asynchronous ESI filter for PHP 7.1+. Its scans string for
and replace with remote content. It's a simple replace for varnish server just for
including esi content. The killer feature is that all request are made
asynchronous, so it should be faster than varnish.
No that this version is just proof of concept. For production implementation wait for Octophpus 0.5.
- PHP 7.1
- Guzzle 6
- cURL extension for PHP. Octopus will run without cURL, but multiple request will not work
The recommended way to install Octophpus is through Composer.
php composer.phar require crazygoat/octophpus
To upgrade to newest version execute:
php composer.phar update crazygoat/octophpus
include_once "../vendor/autoload.php"; $text = '<esi:include src="http://crazy-goat.com/"/>'; $octophpus = new \CrazyGoat\Octophpus\EsiTentacles(); echo $octophpus->decorate($text);
- Octophpus only handle
esi:includefrom ESI spec.
esi:includetags must contains full uri in
srcattribute. Uri must contain protocol, domain name and path. See below.
- If data string contains two or
esi:includetags with same
srcOctophpus will make multiple requests.
Octophpus does not cover full specification ESI RFC.
It also adds some
esi:include parameters that are not part of RFC.
esi:include is listed below:
<esi:include src="http://crazy-goat.com/"/> ^ ^ ^ 1 2 3
esi:includetag name, it is no case sensitive.
srcmust contains full URI.
- Tag must end with
/>. Tags like this
<esi:include ... ></esi:include>will not work
Multi-line tag will work, so if you want to pass more parameters you can split it to more lines:
<esi:include src="http://crazy-goat.com/" />
List of features to be add in the near feature. This list is not ordered.
- New features
- Add caching - use PSR-7 cache interface
- Add hxInclude option on timeout
- Add option to pass headers to requests (for example cookies, x-forwared-proto)
- Add recurrence ESI requests
- Deployment and maintenance
- Prepare roadmap ticket, and remove this stuff
- Travis - form running tests
- Docs and examples
- Create super duper logo
- Add better docs
- Add more examples
- Add basic test