Operation timed out curl php

PHP: Setting cURL timeout options.

This is a short guide on how to use the cURL timeout options in PHP. In certain cases, you may want to specify a timeout in order to prevent your HTTP request from taking too long.

There are two cURL timeout options that you need to know about. These options are slightly different from one another, so I will explain them now:

  • CURLOPT_CONNECTTIMEOUT: The maximum amount of seconds that cURL should spend attempting to connect to a given URL.
  • CURLOPT_TIMEOUT: The maximum amount of seconds it should take for all cURL operations to be carried out. i.e. The maximum amount of time that the request should take.

Take a look at the following piece of code.

In the code above, I set CURLOPT_CONNECTTIMEOUT to 10 seconds and I set CURLOPT_TIMEOUT to 30 seconds. This means:

  • cURL should only spend 10 seconds attempting to connect to the given URL. If it can’t connect after 10 seconds, a timeout should occur.
  • If it does connect successfully, it should only spend a maximum of 30 seconds executing the request. In other words, if we connect, but the server takes too long to respond in full, then cURL should call it a day and stop waiting.

Testing the cURL timeout.

To test this, I added some basic cURL error handling to the end of my script so that any cURL errors would result in an exception being thrown. The local URL that I am sending a HTTP request to uses PHP’s sleep function to create a 40 second delay (which is higher than the 30 seconds limit that we set with CURLOPT_TIMEOUT). As a result, the following exception was thrown:

Uncaught exception ‘Exception’ with message ‘Operation timed out after 30015 milliseconds with 0 bytes received’

As you can see, the cURL timeout after 30,015 milliseconds, which is 30 seconds.

Hopefully this tutorial cleared a few things up for you!

Источник

Как исправить ошибку cURL 28: время ожидания соединения истекло через X миллисекунд 4 мин для чтения

Favorite

Добавить в избранное

Главное меню » WordPress » Как исправить ошибку cURL 28: время ожидания соединения истекло через X миллисекунд

Как исправить ошибку cURL 28: время ожидания соединения истекло через X миллисекунд

Ошибка cURL 28 — это распространенная проблема WordPress REST API, которая может повлиять на производительность вашего веб-сайта и привести к его непредсказуемому поведению.

В этой статье мы покажем вам, как легко исправить проблему «error cURL 28: Connection timed out» на вашем веб-сайте WordPress.

Что такое cURL в WordPress?

CURL — это программная утилита, используемая WordPress и многими другими веб-приложениями для отправки и получения запросов данных с использованием URL-адресов.

WordPress использует cURL для обработки нескольких запросов API. Он доступен как расширение языка программирования PHP.

Библиотека cURL играет решающую роль в том, как WordPress работает за кулисами. Если он не настроен должным образом, ваш веб-сайт WordPress не будет работать должным образом.

Что вызывает ошибку cURL 28 в WordPress?

Неспособность своевременно ответить на запросы данных сервера вызывает ошибку 28 cURL в WordPress.

WordPress использует REST API (метод программирования) для отправки и получения запросов данных. Если время ожидания этих запросов истекло, вы увидите это как критическую проблему в отчете о работоспособности сайта с заголовком «error REST API».

Расширение ошибки покажет вам дополнительную информацию, включая сообщение об ошибке:

Error: cURL error 28: Operation timed out after x milliseconds with x bytes received (http_request_failed)

Вы также можете увидеть другую связанную проблему с заголовком ‘Your site could not complete a loopback request’. Он будет иметь аналогичное сообщение об ошибке со следующим описанием.

‘The loopback request to your site failed, this means features relying on them are not currently working as expected.’

Что может вызвать тайм-аут cURL?

Ряд сценариев может вызвать тайм-аут cURL в WordPress.

Например, плагин брандмауэра WordPress может блокировать запрос REST API, считая его подозрительным действием.

Если ваш DNS-сервер работает некорректно, это также может привести к сбою HTTP-запросов и вызвать ошибку тайм-аута cURL в WordPress.

Плохо настроенный хостинг-сервер WordPress может просто иметь очень низкий порог тайм-аута, что может помешать правильной работе определенных процессов WordPress.

При этом давайте посмотрим, как устранить и исправить проблему ‘curl error 28: Connection timed out’ в WordPress.

1. Временно отключите брандмауэр WordPress.

Если вы используете брандмауэр WordPress или плагин безопасности, временно отключите его.

После этого вам нужно посетить страницу отчета о работоспособности сайта WordPress, чтобы узнать, решена ли ваша проблема.

Если да, то вам нужно проверить журналы брандмауэра WordPress, чтобы узнать, какие запросы API были заблокированы.

Это либо определит источник проблемы, либо вы можете настроить параметры брандмауэра, чтобы не блокировать законные запросы API.

2. Деактивировать все плагины WordPress.

Плагины WordPress создают собственные запросы API для отправки и получения данных. Если эти вызовы слишком часты или занимают слишком много времени для выполнения, это может вызвать ошибку cURL в отчете о работоспособности вашего сайта.

Самый простой способ выяснить это — отключить все плагины WordPress. Просто перейдите на страницу Плагины » Установленные и выберите все плагины.

После этого щелкните раскрывающееся меню «Массовые действия», чтобы выбрать «Деактивировать», а затем нажмите кнопку «Применить».

Теперь вы можете посетить отчет о работоспособности сайта, чтобы узнать, исчезла ли проблема. Если это устранило проблему, вы можете активировать плагины один за другим, пока проблема не появится снова.

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

3. Убедитесь, что ваш хостинг-сервер использует новейшее программное обеспечение.

Следующий шаг — убедиться, что ваш хостинг-сервер WordPress использует последние версии PHP, библиотеки cURL и OpenSSL.

Вы можете проверить это, посмотрев на вкладку системной информации на странице Инструменты » Здоровье сайта.

Просто перейдите на вкладку «Информация» и разверните раздел «Сервер». Отсюда вы можете получить информацию о программном обеспечении, установленном на вашем хостинг-сервере WordPress.

В идеале ваш сервер должен использовать PHP 7.4.13 или выше, curl 7.74.0 или выше и OpenSSL 1.1.1 или выше.

Если это не так, вам необходимо связаться с вашей хостинговой компанией WordPress и попросить их обновить программное обеспечение для вашей учетной записи хостинга.

4. Устранение проблем с небезопасным контентом SSL

Если ваш сайт WordPress использует HTTPS/SSL, но не настроен должным образом, это также может привести к тому, что ваш веб-сервер заблокирует небезопасные запросы cURL.

Точно так же, если ваш сайт WordPress не использует HTTPS/SSL, но он сделал вызов API с использованием URL-адреса HTTP, то эти запросы тоже завершатся ошибкой, и вместо этого вы можете увидеть следующую ошибку cURL:

‘Error: cURL error 7: Failed to connect to localhost port 443: Connection refused (http_request_failed)

Чтобы исправить это, вы можете попросить своего хостинг-провайдера переустановить сертификат SSL для вашего сайта.

5. Обратитесь за помощью к поставщику услуг хостинга.

Если описанные выше действия не помогли устранить ошибку cURL 28 на вашем сайте WordPress, проблема, скорее всего, связана с средой хостинга.

Есть много факторов, которые могут контролироваться и исправляться только вашей хостинговой компанией. Например, если их DNS-серверы не могут своевременно разрешать запросы, это приведет к тайм-ауту запросов cURL.

Другой сценарий может заключаться в более медленном подключении или сетевых проблемах с вашим хост-сервером.

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

Мы надеемся, что эта статья помогла вам узнать, как исправить ошибку cURL 28 в WordPress.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью