public function actionProcess() { $mutex = new FileMutex(); if ($mutex->acquire(self::LOCK_NAME) == false) { Console::output("Another process is already running, exit"); return self::EXIT_CODE_NORMAL; } /** @var ActiveQuery $exportRequests */ $requestsQuery = ExportRequest::find()->where(['is_exported' => 0])->orderBy(['created_at' => SORT_ASC]); try { foreach ($requestsQuery->each() as $exportRequest) { /** @var ExportRequest $exportRequest */ echo "[#" . $exportRequest->id . ": " . $exportRequest->created_at . "] - ..."; $this->processExportRequest($exportRequest); $memoryPeak = round(memory_get_peak_usage() / 1024 / 1024, 2); $memory = round(memory_get_usage() / 1024 / 1024, 2); echo "\r[#" . $exportRequest->id . ": " . $exportRequest->created_at . "] [Mem: {$memoryPeak}Mb/{$memory}Mb] - Success!\n"; } } catch (\Exception $e) { $mutex->release(self::LOCK_NAME); throw $e; } $mutex->release(self::LOCK_NAME); return self::EXIT_CODE_NORMAL; }
public function actionSend($status = Mail::STATUS_WAITING) { $mutex = new FileMutex(); if ($mutex->acquire(__CLASS__) === false) { $this->stdout("Another instance is running...\n"); return self::EXIT_CODE_NORMAL; } $mailsQuery = Mail::find()->where(['status' => $status])->orderBy('created_at ASC'); foreach ($mailsQuery->each() as $mail) { /** @var Mail $mail */ $this->stdout("Sending mail #{$mail->id}\n"); $counter = 0; $mail->on(Mail::EVENT_SINGLE_MAIL_SENT, function () use(&$counter) { $counter++; $this->stdout(" sent " . $counter . "\r"); }); $mail->send(); $this->stdout("\n"); } $mutex->release(__CLASS__); return self::EXIT_CODE_NORMAL; }