CachedBuzzBundle
This bundle is meant to provide a way to cache request made with the buzz bundle. This bundle can be used exactly like buzz, the cache is integrated directly. The bundle is under the MIT license. For more information see the file called LICENSE in the root of the path., (*1)
Installation
-
Add this to the composer.json
:, (*2)
{
"require": {
"dozoisch/cachedbuzz": "dev-master"
}
}
-
Enable the bundle in app/AppKernel.php
:, (*3)
public function registerBundles()
{
$bundles = array(
// ...
new Dozoisch\CachedBuzzBundle\DozoischCachedBuzzBundle(),
);
}
Configuration
No setting is mandatory as every thing fallback to a default setting or a default implementation provided by the bundle. The default cache
uses APC. If the module is not available on your web server, the module initialization will fail., (*4)
Here is the full configuration (in yaml) possible, with the defaults value :, (*5)
dozoisch_cached_buzz:
http_client:
timeout: 10
verify_peer: true
max_redirects: 5
ignore_errors: true
cache: null #takes a string
validator: null #takes a string
In the http_client
is used to configure the buzz client. The cache
setting takes a string that should be a class or a service. Same thing for the validator
., (*6)
The cache
has to implement the class Dozoisch\CachedBuzzBundle\Cache\CacheInterface
.
The validator
has to implement the class Dozoisch\CachedBuzzBundle\Cache\CacheValidatorInterface
., (*7)
Running as a Service
To run the Cached Buzz Bundle as a service, insert this into your services.yml file:, (*8)
parameters:
dozoisch.bundle.name: Dozoisch\CachedBuzzBundle
services:
# The actual service
dozoisch.buzz.browser:
class: '%dozoisch.bundle.name%\Browser'
arguments: ['@dozoisch.buzz.cacher', '@dozoisch.buzz.client.curl']
# Parametring.
dozoisch.buzz.client.curl:
class: 'Buzz\Client\Curl'
public: false
calls:
- [setVerifyPeer, [false]] # this is optional
- [setTimeout, [100]] # this is optional
dozoisch.buzz.cacheinterface:
class: '%dozoisch.bundle.name%\Cache\APCCache'
dozoisch.buzz.cachevalidator:
class: '%dozoisch.bundle.name%\Cache\CacheValidator'
dozoisch.buzz.cacher:
class: '%dozoisch.bundle.name%\Cacher'
arguments: ['@dozoisch.buzz.cacheinterface', '@dozoisch.buzz.cachevalidator']
When using it like that it overrides some of the normal bundles setting and thus, the cacher and client parameters for the browser are no longer optional., (*9)
How to use it
You can now call the browser just as you would with any other service., (*10)
Container aware class
If you wish to call it from a container aware class, a controller for example, just do $this->get('dozoisch.buzz.browser');
., (*11)
Non-container aware class
To call it from a service which is not container aware, first add this to your services.yml, (*12)
services:
my.super.service:
class: xclass.class
arguments: ['@dozoisch.buzz.browser']
And make sure to have the appropriate constructor in your class :, (*13)
/** @var Buzz\Browser */
protected $browser;
public function __construct(\Buzz\Browser $browser) {
$this->browser = $browser;
}
Actually using it
After retrieving the browser, you can use it as you would with the normal buzz browser. This bundles is meant to be used seamlessly over the normal buzz instance., (*14)
$response = $this->browser->get("http://example.com");
$content = $response->getContent();
The available functions are post, head, patch, put, delete., (*15)