/** * @see parent::resolveJobsForQueue() */ public static function resolveJobsForQueue() { parent::resolveJobsForQueue(); $pageSize = static::JOB_QUEUE_PAGE_SIZE; $offset = 0; $timeStamp = time(); do { $campaigns = Campaign::getByStatusAndSendingTime(Campaign::STATUS_ACTIVE, $timeStamp, $pageSize, $offset, false); $offset = $offset + $pageSize; if (is_array($campaigns) && count($campaigns) > 0) { foreach ($campaigns as $campaign) { Yii::app()->jobQueue->resolveToAddJobTypeByModelByDateTimeAttribute($campaign, 'sendOnDateTime', 'CampaignGenerateDueCampaignItems'); } } } while (is_array($campaigns) && count($campaigns) > 0); }
/** * Not pretty, but gets the job done. Solves memory leak problem. * @param CampaignItem $campaignItem */ protected function runGarbageCollection($campaignItem) { assert('$campaignItem instanceof CampaignItem'); $campaignItem->campaign->marketingList->forgetValidators(); $campaignItem->campaign->forgetValidators(); $this->modelIdentifiersForForgottenValidators[$campaignItem->campaign->marketingList->getModelIdentifier()] = true; $this->modelIdentifiersForForgottenValidators[$campaignItem->campaign->getModelIdentifier()] = true; parent::runGarbageCollection($campaignItem); }
/** * Not pretty, but gets the job done. Solves memory leak problem. * @param AutoresponderItem $autoresponderItem */ protected function runGarbageCollection($autoresponderItem) { assert('$autoresponderItem instanceof AutoresponderItem'); $autoresponderItem->autoresponder->marketingList->forgetValidators(); $autoresponderItem->autoresponder->forgetValidators(); $this->modelIdentifiersForForgottenValidators[$autoresponderItem->autoresponder->marketingList->getModelIdentifier()] = true; $this->modelIdentifiersForForgottenValidators[$autoresponderItem->autoresponder->getModelIdentifier()] = true; parent::runGarbageCollection($autoresponderItem); }