Мой бот в телеграм сохраняет все job_id задач из Гитлаба, которые запускаются вручную, и при получении ивента с этим заданием отправляет сообщение с кнопкой, которая должна запустить задачу
Функции для сохранения и получения job_id:
// Записывает айди задания в БД
function job_id_set($job_id)
{
global $pdo;
$sql = "INSERT INTO `notification_messages` (job_id)
VALUES (:job_id)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':job_id', $job_id, PDO::PARAM_INT);
$stmt->execute();
return true;
}
// Достает айди задания из БД
function job_id_get()
{
global $pdo;
$sql = "SELECT job_id
FROM notification_messages
WHERE job_id = :job_id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':job_id', $job_id, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetch();
}
Сейчас бот отправляет ошибку, что сообщение пустое, следовательно выборка не работает
Если добавить SELECT job_id FROM notification_messages WHERE job_id = :job_id ORDER BY id DESC LIMIT 1, то задача запускается, но это не будет работать если ручных задач больше 1
Данные о задачах берутся и сохраняются следующим образом:
$input = file_get_contents("php://input");
$json = json_decode($input);
$job_id = $json->builds[$i]->id;
if ($status == 'manual') {
job_id_set($job_id);
}
Запуск задачи:
$token = token_in_work_select($user_id);
switch ($callback_data) {
case 'start_job': // Кнопка "Запустить задание"
$job_id_get = job_id_get();
$post = [
'chat_id' => $user_id,
'text' => $callback_data
];
sendRequest('sendMessage', $post);
exec('curl --request POST --header "PRIVATE-TOKEN: ' . $token['token'] . '" "https://gitlab.com/api/v4/projects/' . $project_id . '/jobs/' . $job_id_get['job_id'] . '/play"');
break;
}
Может ли быть такое, что при запуске задачи в переменной ничего не хранится, так как файлы с сохранением job_id и его получением имеют разные вебхуки? Пробовал сделать include файла с сохранением айди задачи, ответ бота не поменялся