/** * Clean up running monitor streams */ protected function cleanMonitorStreams() { $runningStreams = $this->commands->getRunningProcesses(); foreach ($runningStreams as $streamCmd) { $process = $this->createRunningProcess($streamCmd); if ($process->isMonitor() === false) { continue; } $eventRepository = $this->entityManager->getRepository('LiveBroadcastBundle:Metadata\\YouTubeEvent'); $event = $eventRepository->find($process->getBroadcastId()); if ($event && $event->getLastKnownState() >= YouTubeEvent::STATE_LOCAL_COMPLETE) { $this->commands->stopProcess($process->getProcessId()); } } }
/** * Stop running broadcasts that have expired. */ protected function stopExpiredBroadcasts() { $broadcastRepository = $this->entityManager->getRepository('LiveBroadcastBundle:LiveBroadcast'); foreach ($this->runningBroadcasts as $runningBroadcast) { $broadcast = $broadcastRepository->find($runningBroadcast->getBroadcastId()); if (!$broadcast instanceof LiveBroadcast) { $this->logger->error('Unable to stop broadcast, PID not found in database', array('broadcast_id' => $runningBroadcast->getBroadcastId(), 'pid' => $runningBroadcast->getProcessId())); continue; } if ($broadcast->isStopOnEndTimestamp() && $broadcast->getEndTimestamp() < new \DateTime()) { $this->logger->info('Stop broadcast', array('broadcast_id' => $broadcast->getBroadcastId(), 'broadcast_name' => $broadcast->getName(), 'pid' => $runningBroadcast->getProcessId())); $this->schedulerCommands->stopProcess($runningBroadcast->getProcessId()); } } $this->updateRunningBroadcasts(); }
/** * Stop a monitor stream */ protected function stopMonitorStream() { $this->logger->info('YouTube stop monitor stream', array('broadcast_id' => $this->monitorBroadcast->getBroadcastId())); $this->command->stopProcess($this->monitorBroadcast->getProcessId()); }