magento-resque
The main idea for the fast Magento database upgrade was to run SQL queries in parallel. This approach was first introduced in Magento Upgrade Replay project., (*1)
Magento Resque is an utility intended to be used as an extendible standalone solution for SQL queries paralell execution during Magento upgrade., (*2)
It's nothing more than a tiny wrapper around PHP Resque – a Radis-backed library for creating jobs, placing them into a queue and processing by workers. Please reffer to https://github.com/chrisboulton/php-resque for detailed documentation., (*3)
Please note: there is a similar project for using PHP Resque with Magento we are not associated with called mage-resque. The main and the only purpose of our tool is to help speed up Magento DB upgrade, while mage-resque is all-purpose. Feel free to check it out., (*4)
Magento Resque basically implements two classes:, (*5)
Queue – reads SQL queries from the specified file, wraps them into Resque jobs and enqueues the jobs in the Redis queue., (*6)
Job – run by workers. Instantiates Magento DB adapter and runs SQL queries wrapped into the job., (*7)
Installation
The easiest way to install Magento Resque is using Composer., (*8)
Create shell/magento-resque/composer.json file under Magento root directory., (*9)
Include Magento Resque to your project:, (*10)
composer require zlik/magento-resque
Run composer install., (*11)
Usage Example
Change the current working directory to demo., (*12)
To enqueue SQL queries from the sql/queries.sql file to the upgrade queue run the following command:, (*13)
$ php resque.php sql/queries.sql
To launch eight simultaneous workers:, (*14)
$ QUEUE='upgrade' COUNT=8 ../vendor/bin/resque
The result should be like this:, (*15)
[notice] Starting work on (Job{upgrade} | ID: 1 | Job | [{"q":"CREATE TABLE `resque_test_1` ..."}])
[notice] Starting work on (Job{upgrade} | ID: 2 | Job | [{"q":"CREATE TABLE `resque_test_2` ..."}])
[notice] (Job{upgrade} | ID: 2 | Job | [{"q":"CREATE TABLE `resque_test_2` ..."}]) has finished
[notice] (Job{upgrade} | ID: 1 | Job | [{"q":"CREATE TABLE `resque_test_1` ..."}]) has finished
Requirements
PHP Redis requires, (*16)