1. Go to this page and download the library: Download discorgento/module-queue library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
discorgento / module-queue example snippets
declare(strict_types=1);
namespace YourCompany\YourModule\Observer;
use Discorgento\Queue\Api\QueueManagementInterface;
use Magento\Framework\Event;
class ProductSaveAfter implements Event\ObserverInterface
{
private QueueManagementInterface $queueManagement;
public function __construct(
QueueManagementInterface $queueManagement
) {
$this->queueManagement = $queueManagement;
}
/** @inheritDoc */
public function execute(Event\Observer $observer) {
// append a job to the queue so it will run in background
$this->queueManagement->append(
// your job class, we'll create it later
\YourCompany\YourModule\Job\SyncProduct::class,
// a identifier of the entity we'll be working with
$observer->getProduct()->getId(),
// (optional) additional data for later usage
['foo' => $observer->getFoo()]
);
}
}
declare(strict_types=1);
namespace YourCompany\YourModule\Job;
use Discorgento\Queue\Api\JobInterface;
use Magento\Catalog\Api\ProductRepositoryInterface;
use YourCompany\YourModule\Gateway\ProductSyncer;
// the job MUST implement the JobInterface
class SyncProduct implements JobInterface
{
private ProductRepositoryInterface $productRepository;
private ProductSyncer $productSynchronizer;
public function __construct(
ProductRepositoryInterface $productRepository,
ProductSyncer $productSynchronizer
) {
$this->productRepository = $productRepository;
$this->productSynchronizer = $productSynchronizer;
}
/** @inheritDoc */
public function execute($target, $additionalData)
{
// retrieve the target product
$product = $this->productRepository->getById($target);
// optional additional data usage example
$product->setFoo($additionalData['foo'] ?? null);
// sync it to a third-party PIM/ERP
$response = $this->productSynchronizer->sync($product);
// NEW!! Now you can optionally return a string as the job "result".
// This will be shown at admin in "System->(Tools) Queue Management"
return "Synced. ID on PIM: {$response->pim_id}";
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.