Beispiel #1
0
 public function __construct($awsConfiguration, $region = null)
 {
     if (!class_exists('AmazonSQS')) {
         throw new \LogicException("Can't find AWS SDK");
     }
     $this->sqs = new \AmazonSQS($awsConfiguration);
     if (null !== $region) {
         $this->sqs->set_region($region);
     }
 }
<?php

require_once '/usr/share/php/AWSSDKforPHP/sdk.class.php';
define('AWS_KEY', 'AKIAIGKECZXA7AEIJLMQ');
define('AWS_SECRET_KEY', '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');
define('AWS_ACCOUNT_ID', '457964863276');
$queue_name = $_GET['queue'];
$sqs = new AmazonSQS();
$sqs->set_region($sqs::REGION_EU_W1);
$queue = $sqs->create_queue($queue_name);
$queue->isOK() or die('could not create queue ' + $queue_name);
$receive_response = $sqs->receive_message($queue->body->QueueUrl(0));
$delete_response = $sqs->delete_message($queue->body->QueueUrl(0), (string) $receive_response->body->ReceiptHandle(0));
$body = json_decode($receive_response->body->Body(0));
pr($body);
function pr($var)
{
    print '<pre>';
    print_r($var);
    print '</pre>';
}
 public static function setAsideCron()
 {
     self::echomsg(null, "Start Sudarshan Stock Sync - SetAside", true);
     $sqs = new AmazonSQS();
     $sqs->set_region(AmazonSQS::REGION_APAC_SE1);
     $db = Db::getInstance(_PS_USE_SQL_SLAVE_);
     $updates = false;
     while (true) {
         $response = $sqs->receive_message(STOCK_SYNC_QUEUE);
         if (!$response->body->ReceiveMessageResult->Message) {
             break;
         } else {
             $updates = true;
             self::echomsg(null, "--------------------------------------------------", true);
             $message = Tools::jsonDecode($response->body->ReceiveMessageResult->Message->Body, true);
             $supplier_reference = $message['supplier_reference'];
             $sup_details = explode("::", $supplier_reference);
             if (count($sup_details) !== 2) {
                 self::echomsg($message, "Action Needed - Invalid Vendor Code. Manual SetAside needed", true);
             } else {
                 $design_no = $sup_details[0];
                 $item_code = $sup_details[1];
                 $id_product = $message["id_product"];
                 $reference = $message["reference"];
                 $id_order = $message["id_order"];
                 $quantity = (int) $message["quantity"];
                 $product = array();
                 $product['id_product'] = $id_product;
                 $product['reference'] = $reference;
                 $product['supplier_reference'] = $supplier_reference;
                 $product['id_order'] = $id_order;
                 self::echomsg($product, "Quantity #{$quantity} - Waiting for SetAside Update");
                 for ($i = 1; $i <= $quantity; $i++) {
                     try {
                         $client = self::getClient();
                         $data = array("Itemcode" => $item_code, "DesignNo" => $design_no, "OrderNo" => (string) $id_order, "Size" => "-");
                         $result = $client->SetAside($data);
                         if ((int) $result->SetAsideResult === 1) {
                             self::echomsg($product, "SetAside success", true);
                         } else {
                             self::echomsg($product, "Manual SetAside Action Needed - System SetAside Failed", true);
                         }
                     } catch (Exception $ex) {
                         $ex_msg = $ex->getMessage();
                         if (stripos($ex_msg, "is insufficient for the requested quantity")) {
                             self::echomsg($product, "<b>Out of Stock</b>", true);
                         } else {
                             self::send_tech_mail('Stock Sync Update SetAside', "Set Aside API Failed");
                             self::echomsg($product, "Manual SetAside Action Needed - System SetAside Failed", true);
                         }
                     }
                 }
             }
             $handle = $response->body->ReceiveMessageResult->Message->ReceiptHandle;
             $sqs->delete_message(STOCK_SYNC_QUEUE, $handle);
         }
     }
     self::echomsg(null, "--------------------------------------------------", true);
     self::echomsg(null, "End Sudarshan Stock Sync - SetAside", true);
     if ($updates) {
         self::send_log_mail('Set Aside');
     }
     return true;
 }
<?php

define('_PS_ADMIN_DIR_', getcwd());
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_);
// Retro-compatibility
include PS_ADMIN_DIR . '/../config/config.inc.php';
include PS_ADMIN_DIR . '/functions.php';
$sqs = new AmazonSQS();
$sqs->set_region(AmazonSQS::REGION_APAC_SE1);
$db = Db::getInstance(_PS_USE_SQL_SLAVE_);
for ($count = 1; $count < 10; $count++) {
    $response = $sqs->receive_message(INVITE_QUEUE);
    if (!$response->body->ReceiveMessageResult->Message) {
        sleep(5);
    } else {
        if (processMessage($response, $db)) {
        }
        $handle = $response->body->ReceiveMessageResult->Message->ReceiptHandle;
        $sqs->delete_message(INVITE_QUEUE, $handle);
    }
}
/**
 * @param unknown_type $response
 * @param Db $db
 * @return boolean
 */
function processMessage($response, $db)
{
    echo $response->body->ReceiveMessageResult->Message->Body . PHP_EOL;
    $message = Tools::jsonDecode($response->body->ReceiveMessageResult->Message->Body, true);
    $id_customer = $message['id_customer'];
Beispiel #5
0
 public static function sendSQSInviteMessage($eventID, $customerID)
 {
     $message = array('id_invite' => $eventID, 'id_customer' => $customerID);
     $sqs = new AmazonSQS();
     $sqs->set_region(AmazonSQS::REGION_APAC_SE1);
     $response = $sqs->send_message(INVITE_QUEUE, self::jsonEncode($message));
     if (!$response->isOK()) {
         $templateVars = array('event' => 'SQS send invite message', 'description' => 'Failed to send message to the queue.');
         @Mail::Send(1, 'alert', Mail::l('SQS Alarm'), $templateVars, '*****@*****.**', 'Rohit Modi', '*****@*****.**', 'VioletBag Monitoring', NULL, NULL, _PS_MAIL_DIR_, false);
         return false;
     }
     return true;
 }