Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // флаг остановки
- $shallStopWorking = false;
- // сигнал об остановке от supervisord
- pcntl_signal(SIGTERM, function () use (&$shallStopWorking) {
- echo "Received SIGTERM\n";
- $shallStopWorking = true;
- });
- // обработчик для ctrl+c
- pcntl_signal(SIGINT, function () use (&$shallStopWorking) {
- echo "Received SIGINT\n";
- $shallStopWorking = true;
- });
- // echo "Started\n";
- while (!$shallStopWorking) {
- require_once __DIR__ . '/vendor/autoload.php';
- require_once("db_update_class.php");
- $pheanstalk = new \Pheanstalk\Pheanstalk('127.0.0.1'); // Подключаюсь к диспетчеру очередей
- $db_update = new BetsUpdate();
- // обрабатываем задания из очереди
- # Чтение очереди beanstalkd
- while (true) {
- # Проверка соединения
- if (!$pheanstalk->getConnection()->isServiceListening()) {
- echo "Ошибка соединения, подождите... \n";
- # Ждет 5 с
- sleep(5);
- # Запуск следующей итерации
- continue;
- }
- try {
- # Получить задачу из очереди, если она готова
- $job = $pheanstalk
- ->watch('bets_need_update') // Подключаюсь к очереди
- ->ignore('default')
- ->reserve(); // Отмечаю команду как находящуюся в обработке(чтобы другой слушатель ее не взял)
- if ($job) {
- $job_data = $job->getData();
- // echo "Прочитал задание из очереди \n";
- $job_task = json_decode($job->getData(), true);
- if ($job_task) {
- $db_update->worker_bet_info($job_task["binaryteam_betid"], $job_task["user_api_key"]);
- }
- echo "Получил задание # ".$job_data."_Время: ".date("Y-m-d\ H:i:s", time())."\n";
- }
- $pheanstalk->delete($job); // Удаляю задание из очереди
- echo "Удалил задание из очереди \n";
- } catch (Exception $e) {
- //echo "Сработало исключение - {$e->getMessage()} \n";
- echo "Заданий нет \n";
- }
- }
- pcntl_signal_dispatch(); // обработаем сигналы в конце итерации
- }
- echo "Finished\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement