Можно ли увеличить время ожидания CloudFlare? Если да, то как?
Мой код требует времени для выполнения, и я не планировал выполнять его с помощью Ajax в ближайшие дни.
Можно ли увеличить время ожидания CloudFlare? Если да, то как?
Мой код требует времени для выполнения, и я не планировал выполнять его с помощью Ajax в ближайшие дни.
Нет, CloudFlare предлагает такую настройку только для планов Enterprise.
Похоже, вам нужно межпроцессное взаимодействие. HTTP не должен использоваться в качестве механизма для выполнения блокирующих задач без отправки ответов, вместо этого такие действия должны быть абстрагированы от службы, отличной от HTTP, на сервере. Используя RabbitMQ (или любой другой MQ), вы можете затем передавать сообщения из элемента HTTP вашего сервера в процесс обработки. службы на вашем веб-сервере.
Я общался с Cloudflare по этому же вопросу, а также с техподдержкой RabbitMQ.
RabbitMQ предложил использовать Web Stomp, основанный на веб-сокетах. Однако Cloudflare предложил...
Веб-сокеты будут создавать постоянное соединение через Cloudflare, и тайм-аута как такового нет, но лучший способ решить эту проблему — просто обработать запрос в фоновом режиме и ответить асинхронно, а также обслуживать страницу «Загрузка ...» или аналогичную. чем заставлять пользователя ждать 100 секунд. Это также улучшит пользовательский опыт для пользователя.
ОБНОВЛЕНИЕ:
Для полноты картины я также запишу здесь, что я также спросил CloudFlare о запуске отчета через поддомен и его «сером облаке», и они ответили следующее:
Я предлагаю проверить, почему для отчетов требуется более 100 секунд. Отключение Cloudflare на поддомене позволит злоумышленникам узнать о вашем исходном IP-адресе, и злоумышленники будут атаковать напрямую, минуя Cloudflare.
ДАЛЬНЕЙШЕЕ ОБНОВЛЕНИЕ
В конце концов я решил эту проблему, запустив отчет с использованием потока и используя AJAX для «опроса», был ли отчет создан. См. раздел обход тайм-аута CloudFlare в 100 секунд.
Я знаю, что это нельзя рассматривать как решение, но есть два способа избежать этого. 1) Поскольку этот тайм-аут часто связан с длительной генерацией чего-либо, этот тип работ может быть выполнен через crontab или, если у вас есть доступ к SSH, вы можете напрямую запустить команду PHP для выполнения. В этом случае соединение не обслуживается через Cloudflare, поэтому оно работает до тех пор, пока ваша конфигурация позволяет ему работать. Проверьте в Google, как запускать скрипты из командной строки или как определять их в crontab, используя /usr/bin/php /direct/path/to/file.php
2) Вы можете создать поддомен, который не добавляется в cloudlflare, переместить туда свой скрипт и запускать их напрямую через URL, вызов Ajax или что-то еще.
На форумах сообщества Cloudflare есть хороший ответ по этому поводу:
Если вам нужны скрипты, которые выполняются дольше 100 секунд без возврата каких-либо данных в браузер, вы не можете запускать их через Cloudflare. Есть несколько вариантов: запустить скрипты через субдомен с серым облаком или изменить скрипт так, чтобы он запускал длительный фоновый процесс и быстро возвращал статус, который браузер может опрашивать до тех пор, пока фоновый процесс не завершится, после чего точка полный ответ может быть возвращен. Это то, как большинство людей делают этот тип действий, поскольку держать открытые HTTP-соединения в течение длительного времени ненадежно и может быть очень обременительным.
Эта тема на Stackoverflow высоко в поисковой выдаче, поэтому я решил записать этот ответ для тех, кому он покажется полезным.
Как уже упоминалось @mjsa, Cloudflare предлагает настройки тайм-аута только для корпоративных клиентов, что не подходит для большинства людей.
Однако вы можете отключить проксирование Cloudflare для этого конкретного (суб)домена, превратив оранжевое облако в серое:
До:
После:
Примечание: это отключит дополнительные функции для этого конкретного (суб)домена, включая маскировку IP-адресов и SSL-сертификаты.
Как говорится в документации Cloudflare:
Если вы регулярно запускаете HTTP-запросы, выполнение которых занимает более 100 секунд (например, экспорт больших данных), рассмотрите возможность переноса этих длительных процессов на субдомен, который не проксируется Cloudflare. Для этого поддомена значок оранжевого облака будет изменен на серый в настройках DNS Cloudflare. Обратите внимание, что вы не можете использовать правило страницы, чтобы обойти ошибку 524.