-
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 скриптов.
Выставляем значение 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
Конфигурация виджета:
-
Ссылки на большие файлы
'stream' => false
-
Поток больших файлов
'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',
-
Пакетная загрузка
'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