При запросе вывода данных через cURL работает только при обновлении страницы?
Добрый день, впервые столкнулся с этим. Код на php с авторизацией для подключения к стороннему API. Вывожу данные которые получаю и тут на тебе. При загрузке страницы ничего не выводиться, но если несколько раз обновить страницу то всё выводит без проблем. Кто с таким сталкивался и как это лечить? Пример реализации ниже. Может есть соображения на этот счёт?
$ch = curl_init('УРЛ САЙТА КОТОРЫЙ ОТДАЁТ API'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth КОД АВТОРИЗАЦИИ', 'Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo $html |
$ch = curl_init('УРЛ САЙТА КОТОРЫЙ ОТДАЁТ API'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth КОД АВТОРИЗАЦИИ', 'Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo $html
Дополнительно:
Сталкивались все. Ситуация, когда что-то не работает, является совершенно банальной.
Соображения очень простые. Рассказываем специально для тестеров:
Если код не выводит то что должен, это значит, что он не работает.
Если код не работает, это значит что скорее всего происходит какая-то ошибка.
Чтобы узнать, как лечить, надо прочитать сообщение об ошибке.
Чтобы прочитать сообщение, надо загуглить PHP curl как получить сообщение об ошибке
, но если несколько раз обновить страницу то всё выводит без проблем
$html = curl_exec($ch); if ($html === false) { // Выведем ошибку: echo curl_error($html); } else { // Выведем результат: $jsonArray = json_decode($html); } $info = curl_getinfo($ch); curl_close($ch); |
$html = curl_exec($ch); if ($html === false) { // Выведем ошибку: echo curl_error($html); } else { // Выведем результат: $jsonArray = json_decode($html); } $info = curl_getinfo($ch); curl_close($ch);
и что конкретно лежит в $html?
и что это за глупость, if ($html === false) echo curl_error($html);? что вы хотите получить от curl_error(false)?
Ответы:
если сервера этого сервиса так хреново работают, то просто учти это в коде и повторяй запрос пока сервис не сможет отдать результат
- строчку кода подскажите как реализовать?
- запихни свой код в функцию и вызывай её в цикле пока она не вернет результат, только добавь еще CURLOPT_CONNECTTIMEOUT и CURLOPT_TIMEOUT
- Костя Тестер, ну и советую переходить на https://docs.guzzlephp.org/en/stable/ или подобные библиотеки чтобы избавиться от рутины
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы понять, почему вывод данных через cURL работает только при обновлении страницы, нужно проанализировать код и понять, в чем может быть причина такого поведения. Возможно, проблема связана с тем, что запрос через cURL выполняется только при загрузке страницы, и не обновляется динамически.
Одним из способов решения этой проблемы может быть использование AJAX запросов для обновления данных на странице без необходимости перезагрузки страницы.
Вот пример кода на PHP с использованием AJAX для получения данных через cURL:
// PHP код для выполнения запроса через cURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/data'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); // Вывод данных на страницу echo '<div id="data"></div>'; // JavaScript код для отправки AJAX запроса и обновления данных на странице // Функция для отправки AJAX запроса function fetchData() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://example.com/api/data', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { document.getElementById('data').innerHTML = xhr.responseText; } }; xhr.send(); } // Вызов функции fetchData при загрузке страницы window.onload = fetchData;
Этот код отправляет AJAX запрос на сервер при загрузке страницы и обновляет данные на странице без необходимости перезагрузки.
Таким образом, использование AJAX вместе с cURL может помочь решить проблему, когда вывод данных через cURL работает только при обновлении страницы. Не забудьте также проверить, что сервер правильно обрабатывает AJAX запросы и возвращает корректные данные.