Advertisement
aleksv11

Untitled

May 29th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.53 KB | None | 0 0
  1. <?php
  2. // флаг остановки
  3. $shallStopWorking = false;
  4.  
  5. // сигнал об остановке от supervisord
  6. pcntl_signal(SIGTERM, function () use (&$shallStopWorking) {
  7.     echo "Received SIGTERM\n";
  8.     $shallStopWorking = true;
  9. });
  10.  
  11. // обработчик для ctrl+c
  12. pcntl_signal(SIGINT,  function () use (&$shallStopWorking) {
  13.     echo "Received SIGINT\n";
  14.     $shallStopWorking = true;
  15. });
  16.  
  17. // echo "Started\n";
  18.  
  19. while (!$shallStopWorking) {
  20.  
  21.     require_once __DIR__ . '/vendor/autoload.php';
  22.     require_once("db_update_class.php");
  23.     $pheanstalk = new \Pheanstalk\Pheanstalk('127.0.0.1'); // Подключаюсь к диспетчеру очередей
  24.     $db_update = new BetsUpdate();
  25.  
  26.     // обрабатываем задания из очереди
  27.  
  28. # Чтение очереди beanstalkd
  29. while (true) {
  30.     # Проверка соединения
  31.    if (!$pheanstalk->getConnection()->isServiceListening()) {
  32.         echo "Ошибка соединения, подождите... \n";
  33.  
  34.         # Ждет 5 с
  35.        sleep(5);
  36.  
  37.         # Запуск следующей итерации
  38.        continue;
  39.     }
  40.    
  41.     try {
  42.  
  43.        
  44.         # Получить задачу из очереди, если она готова
  45.        $job = $pheanstalk
  46.             ->watch('bets_need_update') // Подключаюсь к очереди
  47.             ->ignore('default')
  48.             ->reserve(); // Отмечаю команду как находящуюся в обработке(чтобы другой слушатель ее не взял)
  49.  
  50.         if ($job) {
  51.  
  52.             $job_data = $job->getData();
  53.  
  54.            // echo "Прочитал задание из очереди \n";
  55.             $job_task = json_decode($job->getData(), true);
  56.            
  57.             if ($job_task) {    
  58.                $db_update->worker_bet_info($job_task["binaryteam_betid"], $job_task["user_api_key"]);
  59.             }
  60.  
  61.            echo "Получил задание # ".$job_data."_Время: ".date("Y-m-d\ H:i:s", time())."\n";
  62.  
  63.         }    
  64.  
  65.         $pheanstalk->delete($job); // Удаляю задание из очереди
  66.  
  67.         echo "Удалил задание из очереди \n";
  68.  
  69.     } catch (Exception $e) {
  70.         //echo "Сработало исключение - {$e->getMessage()} \n";
  71.         echo "Заданий нет \n";
  72.     }
  73. }
  74.  
  75.     pcntl_signal_dispatch(); // обработаем сигналы в конце итерации
  76. }
  77.  
  78. echo "Finished\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement