$timeLeft = 0;
 }
 if ($end > $now) {
     $end = $now;
 }
 $passed = $end - $start;
 if ($technology->getLevel() && $technology->getUpgradable()) {
     $realTime += $technology->getTime() * $technology->getIncrementTime() * $technology->getLevel();
 } else {
     $realTime = $technology->getTime();
 }
 $researched = $passed / $realTime;
 $progress = $technology->getProgress() + $researched;
 if ($researched > 0) {
     if ($progress >= 100) {
         $technologyConn->updateTechnologyLink($technology->getId(), $player->getId(), 0, 0, '*', $technology->getLevel() + 1, 0);
         $technology->setLevel($technology->getLevel() + 1);
         $technology->setProgress(0);
         $technology->setDateStartProgress(0);
         $technology->setDateEndProgress(0);
     } else {
         $technologyConn->updateTechnologyLink($technology->getId(), $player->getId(), $passed, 0, '+', $technology->getLevel(), $progress);
         $technology->setProgress($progress);
         $technology->setDateStartProgress($technology->getDateStartProgress() + $passed);
         if ($timeLeft <= 0) {
             $technologyConn->updateTechnologyLink($technology->getId(), $player->getId(), 0, 0, '*');
             $technology->setDateStartProgress(0);
             $technology->setDateEndProgress(0);
         }
     }
 }