Как я могу проверить, не работает ли RESTAPI, используя curl php

Я хочу создать виртуальную среду, чтобы проверять, не работает ли веб-служба.

Случай: если веб-служба не работает в течение 7 секунд, система должна повторить попытку один раз, а если не работает, она должна отправить уведомление администратору.

$ch = curl_init();
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_URL, $url); 
// Use 0 to wait indefinitely.
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7);
// The maximum number of seconds to allow cURL functions to execute
curl_setopt($ch, CURLOPT_TIMEOUT, 7);
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
//curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$responseData = curl_exec($ch); 

$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
$httpCode = curl_getinfo($ch); 
curl_close($ch);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
496
2

Ответы 2

Вы можете попробовать это:

$url = 'my.url';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($retcode == 200)
{
    // It's working
}
else
{
    // It's down
}

Здравствуйте, пожалуйста, еще раз измените мой вопрос и помогите мне избавиться от проблемы.

Chief Technical Officer-CTO 30.04.2018 10:23

Этот код выше проверяет URL-адрес и возвращает его код возврата HTTP. Если 200, значит, вверх, а то могут быть проблемы. Если в настоящее время у вас есть проблемы, пожалуйста, добавьте их в свой первый пост. Прямо сейчас мы не знаем, в чем проблемы в вашем коде.

Lamastikot 30.04.2018 10:28

На самом деле мой код работает нормально, но я получил требование клиента о том, что если система попадает в веб-службу и она не работает, система должна проверять это в течение 7 секунд, и если он не получает ответа, программа должна спать на 5 секунд и повторить попытку. Проблема в том, что я не могу сказать провайдеру веб-сервисов, чтобы он отключил сервисы для тестирования моего кода. Ты хоть представляешь, как я могу создать для него виртуальную среду.

Chief Technical Officer-CTO 30.04.2018 10:35

Вы можете просто попытаться запросить несуществующий URL-адрес, что заставит вас повторить попытку через 7 секунд, а затем отправить вам письмо

Lamastikot 30.04.2018 10:39

Да, я уже сделал это, но программа получает ответ до 7 секунд, и из-за этого я не могу проверить случай.

Chief Technical Officer-CTO 30.04.2018 10:40

Что вы имеете в виду, получив ответ до истечения 7 секунд?

Rameleu 30.04.2018 10:42

Если я пробую код с несуществующим URL-адресом, он получает ответ в течение 7 секунд, а не ищет его в течение 7 секунд.

Chief Technical Officer-CTO 30.04.2018 10:46

Я упомянул свой код под своим вопросом. Пожалуйста, проверьте это один раз.

Chief Technical Officer-CTO 30.04.2018 10:52

Я нашел решение для этого. Мы можем просто указать URL как google.co.in:8080

Chief Technical Officer-CTO 30.04.2018 12:26

Наконец, я нашел решение.

function checkData($loop = 0){
    $url = 'http://google.co.in:8080/';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_URL, $url); 
    // Use 0 to wait indefinitely.
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 7);
    // The maximum number of seconds to allow cURL functions to execute
    curl_setopt($ch, CURLOPT_TIMEOUT, 7);
    curl_setopt($ch, CURLOPT_HEADER, FALSE); 
    //curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $responseData = curl_exec($ch); 

    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    $httpCode = curl_getinfo($ch); 
    curl_close($ch);

    if ($curl_errno > 0){
        if ($loop > 1 ){
           //send mail to admin
        }else{
           $loop++;
           sleep(7);
           checkData();
        }
    }
}
checkData();

Это НЕ ответ на требование вашего клиента, пожалуйста, внимательно проверьте требования. Где ваш код спать 5 секунд?

Dinesh Chand 02.08.2018 12:22

Почему вы просите время для сна, потому что оно не требуется. Я пытался создать среду, если сервер не отвечает, но теперь все работает нормально и одобрено нашим менеджером по программированию, тестировщиками и клиентами.

Chief Technical Officer-CTO 03.08.2018 09:19

ну, это то, что вы сказали в своем комментарии, "и если он не получит ответа, программа должна спать в течение 5 секунд и повторить попытку"

Dinesh Chand 05.08.2018 12:45

@DineshChand: Я только что опубликовал базовое решение и считаю, что хороший разработчик может его изменить. Теперь редактировал по ответу.

Chief Technical Officer-CTO 09.08.2018 06:54

Другие вопросы по теме