Social Media Image Kit can be configured to process image rendering using a job queue. The typical setup for this scenario will involve having a database available, or some other asynchronous method of processing jobs.
Before continuing, it is recommended that you are familiar with how Laravel's queue system works in general. For more information, you may consult their official documentation at https://laravel.com/docs/10.x/queues.
You may configure the queue Social Media Image Kit should use by modifying the queue.php
configuration file:
1<?php 2 3return [ 4 5 // ... 6 7 /* 8 |-------------------------------------------------------------------------- 9 | Queue Configuration for Image Jobs10 |--------------------------------------------------------------------------11 |12 | The 'Queue' configuration tailors how social media image jobs are queued,13 | enabling the choice of a specific driver or queue name for dispatching.14 |15 */16 17 'queue' => [18 'connection' => config('queue.default', 'sync'),19 'name' => 'default',20 ],21 22 // ...23];
You can adjust the following configuration values:
connection: The queue connection. This will use your project's default queue connection by default.
name: You may specify a custom queue name to adjust where jobs are dispatched and processed.
After you've setup your queue information you must enable events in order for jobs to be added to the queue. Social Media Image Kit's event listeners will create jobs to update your images whenever an entry in a configured collection is created or updated.
To enable Social Media Image Kit's queue events you may update the events_enabled
value within the queue.php
configuration file:
1<?php 2 3return [ 4 5 // ... 6 7 /* 8 |-------------------------------------------------------------------------- 9 | Auto-Generation of Images on Events10 |--------------------------------------------------------------------------11 |12 | The events_enabled option determines if images should be auto-generated13 | by the addon when entries are saved or created. Set to true to enable14 | automatic creation upon these events. When disabled, you will need15 | to manually generate images using the provided Artisan commands16 | or some other process if data within the entry has changed and17 | you wish to update the social media images for the entry.18 |19 */20 21 'events_enabled' => false,22 23 // ...24];
Set this configuration value to true
in order to have Social Media Image Kit response to Statamic's entry creation and update events.
When alerts are enabled it is possible for many jobs to be created if content editors save their changes frequently while editing. To help reduce the total number of image generation jobs created, Social Media Image Kit provides a feature to prevent duplicate jobs.
This feature relies on a database connection in order to work. The database details can be updated within the queue.php
configuration file:
1<?php 2 3return [ 4 5 // ... 6 7 /* 8 |-------------------------------------------------------------------------- 9 | Database Configuration for Social Media Image Tasks10 |--------------------------------------------------------------------------11 |12 | Some features, such as preventing duplicate jobs, requires a database13 | connection. The following configuration can be used to change the14 | database connection name, as well as the database table used.15 |16 */17 18 'database' => [19 'connection' => config('database.default', 'mysql'),20 'table' => 'social_media_image_tasks',21 ],22 23 // ...24];
After you have updated your database configuration, you will need to create the social_media_image_tasks
database table. You can create a migration for this by running the following command from the root of your project:
1php artisan social-media-image-kit:image-tasks-table
Once the migration has been created you can add it to your database using the migration deployment process of your choice.
After both the queue and database configuration values have been updated, you can enable the prevent_duplicate_jobs
feature within the queue.php
configuration file:
1<?php 2 3return [ 4 5 // ... 6 7 8 /* 9 |--------------------------------------------------------------------------10 | Prevent Duplicate Jobs Configuration11 |--------------------------------------------------------------------------12 |13 | Enabling 'Prevent Duplicate Jobs' stops the creation of multiple jobs for14 | the identical entry, crucial when edits are frequent and saves are many.15 | This setting relies on a database and an asynchronous queue system.16 |17 */18 19 'prevent_duplicate_jobs' => false,20 21 // ...22];
The following amazing people help support this site and my open source projects ♥️
If you're interesting in supporting my work and want to show up on this list, check out my GitHub Sponsors Profile.