Yii2 ошибка 504

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

504 gateway time-out

Использую для экспорта данных в excel это расширение kartik\export\ExportMenu; Видимо из-за того, что данных много выдает такую ошибку. Как можно исправить эту ошибку? Может как-то увеличить время ожидания ответа от сервера,

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

skvarovski писал(а): ↑2017.01.25, 16:02
как часто выгружаете? не желаете консольно выгружать в заранее известную папку, а потом уже на фронтэнде размещать ссылку?

Дело в том, что выборка меняется динамически и нужна она в разное время в течении дня.

lgXenos

Сообщения: 243
Зарегистрирован: 2015.11.30, 15:42

Re: 504 gateway time-out

Сообщение

lgXenos »

cruim писал(а): ↑2017.01.25, 15:50
Может как-то увеличить время ожидания ответа от сервера,

Это вопрос не к Yii, а к азам PHP: http://google.gik-team.com/?q=php+max+execution+time

Если доступ к этой ссылке есть ТОЛЬКО у приближенных людей, то можно использовать эту директиву в index.php

Если вы получаете данные от посторонних людей, и любой вошедший на сайт может загрузить вам 50мб экселя — то надо отказаться от реал-тайма

Вы не описали свою ситуацию полностью

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

skvarovski писал(а): ↑2017.01.25, 16:26
а сколько тысяч строк выгружаете? может заюзаете PHPExcel ? а как насчет делать очередь заданий на выгрузку и консолькой их выгружать?

Использую это расширение kartik\export\ExportMenu
Сегодня были проблемы с 650 строками

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

lgXenos писал(а): ↑2017.01.25, 16:48

cruim писал(а): ↑2017.01.25, 15:50
Может как-то увеличить время ожидания ответа от сервера,

Это вопрос не к Yii, а к азам PHP: http://google.gik-team.com/?q=php+max+execution+time

Если доступ к этой ссылке есть ТОЛЬКО у приближенных людей, то можно использовать эту директиву в index.php

Если вы получаете данные от посторонних людей, и любой вошедший на сайт может загрузить вам 50мб экселя — то надо отказаться от реал-тайма

Вы не описали свою ситуацию полностью

Вошедший на сайт может только скачать файл в формате excel. Загрузка недоступна

Аватара пользователя

Alexum

Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: 504 gateway time-out

Сообщение

Alexum »

skvarovski писал(а): ↑2017.01.25, 16:26
а сколько тысяч строк выгружаете? может заюзаете PHPExcel ? а как насчет делать очередь заданий на выгрузку и консолькой их выгружать?

Это расширение его (PHPExcel ) и использует.

cruim писал(а): ↑2017.01.25, 16:59
Использую это расширение kartik\export\ExportMenu
Сегодня были проблемы с 650 строками

Неужели такой хиленький сервер? :? И через сколько по времени выдаётся сообщение? Сколько столбцов?

cruim писал(а): ↑2017.01.25, 15:50
Вошедший на сайт может только скачать файл в формате excel. Загрузка недоступна

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

lgXenos

Сообщения: 243
Зарегистрирован: 2015.11.30, 15:42

Re: 504 gateway time-out

Сообщение

lgXenos »

cruim писал(а): ↑2017.01.25, 17:01
Вошедший на сайт может только скачать файл в формате excel. Загрузка недоступна

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

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

lgXenos писал(а): ↑2017.01.25, 18:19

cruim писал(а): ↑2017.01.25, 17:01
Вошедший на сайт может только скачать файл в формате excel. Загрузка недоступна

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

Сделал так

Код: Выделить всё

<?php
    ini_set('max_execution_time', 3600); //3600 seconds = 60 minutes
       $gridColumns = [
       'order_number',
  [

Все равно 504 выдает. Когда было порядка 250,все корректно выгружалось

lgXenos

Сообщения: 243
Зарегистрирован: 2015.11.30, 15:42

Re: 504 gateway time-out

Сообщение

lgXenos »

cruim писал(а): ↑2017.01.26, 15:58Все равно 504 выдает

Когда?
Сразу?
Через час?
Через пол часа?
Через минуту?

cruim писал(а): ↑2017.01.26, 15:58Когда было порядка 250,все корректно выгружалось

Кого 250?
Секунд?
Строчек?
Килобайт?
Файлов?

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

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

lgXenos писал(а): ↑2017.01.26, 17:04

cruim писал(а): ↑2017.01.26, 15:58Все равно 504 выдает

Когда?
Сразу?
Через час?
Через пол часа?
Через минуту?

cruim писал(а): ↑2017.01.26, 15:58Когда было порядка 250,все корректно выгружалось

Кого 250?
Секунд?
Строчек?
Килобайт?
Файлов?

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

504 выдает спустя 60 секунд. нормально выгружалось при количестве 250 строк и меньше

cruim

Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: 504 gateway time-out

Сообщение

cruim »

lgXenos писал(а): ↑2017.01.27, 09:02

cruim писал(а): ↑2017.01.26, 17:22504 выдает спустя 60 секунд

Код: Выделить всё

ini_set('max_execution_time', 3600); //3600 seconds = 60 minutes

Мне одному тут кажутся странности?

Это были эксперименты, изначально там было

скрипт все равно отрабатывает только 60 сек и кидает 504

Аватара пользователя

Alexum

Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: 504 gateway time-out

Сообщение

Alexum »

Копайте в сторону настроек веб-сервера. Apache? Timeout в httpd.conf сколько? Но вообще 250 записей за минуту — это как-то ну очень мало. Даже PHPExcel со своими закидонами и на тормозном сервере должен собирать файл гораздо быстрее. Может проблема со слишком долгим(тяжёлым) формированием данных? Если по этому DataProvider отобразить GridView с отключенной пагинацией быстро открывается?

Здравствуйте. Имею работающий сайт в docker на yii2 и postgres. При переносе на vds не получается завести его — выдает то ошибку 504, то — PDOException: SQLSTATE[08006] [7] timeout expired in /var/www/html/site.ru/vendor/yiisoft/yii2/db/Connection.php:705.
После стэка вызовов:
Additional Information:
Array
(
[0] => 08006
[1] => 7
[2] => could not connect to server: No route to host
Is the server running on host «172.17.0.1» and accepting
TCP/IP connections on port 5432?
)
phpinfo() говорит, что pdo_pgsql активен, правда версия 9.2.24, в то время как postgres на сервере стоит 13. Не заню имеет ли это значение.
Другой сайт на yii2 и mysql работает на этом сервере. Подключиться к postgres через pgadmin c домашнего компа могу, порт 5432 открыт и сервис postgresql добавлен в исключения firewall.


  • Вопрос задан

  • 372 просмотра

Given:
There is a web server with established Nginx, php-fpm and MySQL few XML parsers handle tens of thousands of files and put them into the database average processing time of 3-5 minutes, write it all on Yii.
the problem is this:
If you run any parser during these 5 minutes while he works for any calls to other resource the web server issues a 504 Gateway Time-out
In this case, if the same server I run an older version of the parser written in pure php that 504 error occurs and I can run several pieces in parallel and easily open other pages of the resource.

Error in the logs only from Nginx:

2014/07/16 14:25:27 [error] 11665#0: *9 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 37.#.#.#, server: #####.ru, request: «GET /index.php?r=loading/parsenotifications HTTP/1.1», upstream: «fastcgi://127.0.0.1:9000», host: «#####.ru», referrer: «http://#####.ru/index.php?r=loading/index»

2014/07/16 14:25:29 [error] 11665#0: *12 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 37.#.#.#, server: #####.ru, request: «GET /index.php?r=loading/parsecontracts HTTP/1.1», upstream: «fastcgi://127.0.0.1:9000», host: «#####.ru», referrer: «http://#####.ru/index.php?r=loading/index»

При запуске скриптов PHP требующих длительного выполнения бывает часто, что появляется ошибка 504 Gateway Time-out nginx, — это говорит о том, что nginx работает в режиме прокси и обрубает коннект не дождавшись выполнения скрипта.

Для решения этой проблемы в моем случае помогли следующие манипуляции:

    1) Увеличил время выполнения PHP скриптов.

504 Gateway Time-out - max_execution_time

Выставляем значение max_execution_time = 360 — это означает 360 сек.

     2) В конфиг nginx добавляем директивы позволяющие ожидать выполнения скрипта более длительное время.

В ispManager это делается так — Домены -> WWW-домены -> Конфиг -> Добавляем как на скрине, сохраняем и готово!

Поставлю 600 (600 сек.) — этого должно быть достаточно.

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

Вот и все, теперь скрипты будут выполняться долго и nginx будет дожидаться выполнения — это очень часто требуется при парсинге или импорте/экспорте товаров (в моем случае).

У меня проблема с загрузкой файла Excel с сайта. Я использую kartik\export\ExportMenu; Я добавляю в скрипт в это:

 <?php
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
$gridColumns = [
    'order_number',
    [

Но это не помогает. Как я мог это исправить?

public function actionIndex()
{
    $searchModel = new OrderSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

2017-01-26 11:54

2
ответа

Есть три конфигурации, которые могут помочь в случае тайм-аута, но это не гарантируется.

Варианты для установки в ExportMenu Конфигурация виджета:

  1. Ссылки на большие файлы

    'stream' => false
    
  2. Поток больших файлов

    'stream' => false, // this will automatically save the file to a folder on web server
    'streamAfterSave' => true, // this will stream the file to browser after its saved on the web folder 
    'deleteAfterSave' => true, // this will delete the saved web file after it is streamed to browser,
    'target' => '_blank',
    
  3. Пакетная загрузка

    'batchSize' => 10,
    'target' => '_blank',
    

2017-01-26 12:04

Попробуйте увеличить max_execution_time

 <?php
    ini_set('max_execution_time', 3600); //3600 seconds = 60 minutes
       $gridColumns = [
       'order_number',
  [

2017-01-26 12:04

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

Понравилась статья? Поделить с друзьями:
  • Yii2 отключить вывод ошибок
  • Youtube на телефоне код ошибки 400
  • Youtube произошла ошибка повторите попытку ios
  • Yii2 500 ошибка
  • Youtube ошибка 400 4pda