Sometimes it is desirable to execute actions in the background and periodic intervals. Building on from last week’s post, I wanted to spotlight a new feature, which uses the asynchronous event queue, to allow you to do this – the periodic execution (cron) service.

After completing the configuration step for enabling the Asynchronous Event Queue, you can then run the Known console periodic execution service:

./known.php service-cron

Once running, this service will periodically trigger an event to which code can listen to. Available events are cron/minute, cron/hourly and cron/daily.

While I’ve not really had a chance to talk about it recently, owing to being rather busy, there has been a lot of work done in Known core recently.

Known uses event queues to dispatch things like Webmention pings. By default, this dispatching is synchronous. However, an advanced feature that was recently added, was the ability to enqueue events and have them dispatched later in an asynchronous fashion, enabling faster page loading.

Configuring

As mentioned above, by default Known uses a synchronous event queue. To use something the asynchronous queue, add the following line to your config.ini:

event_queue = 'AsynchronousQueue'

Next, you need to run the Known event queue dispatching service using the Known console tool:

./known service-event-queue

Note: if you’re using per-domain configuration you’ll need to set an environment variable in order for everything to work as expected:

export KNOWN_DOMAIN='your.domain.name'

Enjoy!

I recently did a little bit of work to help speed up some things in Known, those of you watching the project will have seen work to minimise things like javascript and css.

Anyway, I ran Google insights over my Known install, and was surprised that files weren’t being compressed. It used to be the case that all you had to do was enable mod_deflate or mod_gzip on apache, but somewhere along the line the configuration must have changed.

Long story short, I needed to enable it by creating a /etc/apache2/conf.d/deflate.conf file… here’s mine:

SetOutputFilter DEFLATE

SetEnvIfNoCase Request_URI \.(?:gif|png|jpg|jpeg)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary