Asynchronous ESI filter for PHP 7.1+. Its scans string for esi:include
tags
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:include
from ESI spec. - All
esi:include
tags must contains full uri insrc
attribute. Uri must contain protocol, domain name and path. See below. - If data string contains two or
esi:include
tags with samesrc
Octophpus 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.
Minimal valid esi:include
is listed below:
<esi:include src="http://crazy-goat.com/"/>
^ ^ ^
1 2 3
esi:include
tag name, it is no case sensitive.src
must 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