示例#1
0
<?php

use GW2Spidy\DB\ItemQuery;
use GW2Spidy\DB\SellListingQuery;
use GW2Spidy\NewQueue\ItemListingDBQueueItem;
use GW2Spidy\NewQueue\ItemListingDBQueueManager;
use GW2Spidy\NewQueue\ItemListingDBQueueWorker;
require dirname(__FILE__) . '/../autoload.php';
$queueManager = new ItemListingDBQueueManager();
$queueWorker = new ItemListingDBQueueWorker($queueManager);
$item = ItemQuery::create()->findPk($argv[1]);
if (!$item) {
    die("failed to find item");
}
var_dump($item->getName(), $item->getItemTypeId());
$queueItem = new ItemListingDBQueueItem($item);
var_dump($queueItem->getItem()->getQueuePriority());
if (isset($argv[2]) && strstr("search", $argv[2])) {
    $queueItem = array($queueItem);
}
var_dump(is_array($queueItem));
$queueWorker->work($queueItem);
$l = SellListingQuery::create()->filterByItemId($item->getDataId())->orderByListingDatetime(\Criteria::DESC)->limit(1)->findOne();
var_dump($l->toArray());
     continue;
 }
 echo " got item {$run} ...";
 // mark our slot as held
 $slot->hold();
 $try = 1;
 $retries = 2;
 while (true) {
     /*
      * process the item
      *  wrapped in trycatch to catch and log exceptions
      *  get a worker (reuse old instances) and let it work the item
      */
     try {
         ob_start();
         $queueWorker->work($workload);
         if ($debug) {
             echo ob_get_clean();
         } else {
             ob_get_clean();
         }
         break;
     } catch (Exception $e) {
         $log = ob_get_clean();
         echo " --------------- \n !! worker process threw exception !!\n --------------- \n {$log} \n --------------- \n {$e} \n --------------- \n";
         if ($e->getCode() == BaseWorker::ERROR_CODE_NO_LONGER_EXISTS || strstr("CurlRequest failed [[ 401 ]]", $e->getMessage())) {
             break;
         }
         if ($try <= $retries) {
             logg("error, retrying, sleeping [5] ... \n");
             sleep(5);