После запуска php-скрипта и успешной реализации сервер отправляет все запросы 504 ошибка - PullRequest
0 голосов
/ 23 января 2012

После ошибки 504 проблема исправляется только перезагрузкой.Сервер = vps.Вот сценарий, за которым следует ошибка:

<?php

$data = array('url','url','url'...'url');
foreach($data AS $v) {
  shell_exec('wget -O /dev/null '.$v);
}

'url' около сотни, все они успешно выполнены, URL - это служба на том же VPS только на другом порту (обрабатывается сценарием в perl,nginx не участвует).На сервере nginx, за которым следует apache2.

Если вызов не foreach, а только один раз, когда команда собирается.Я пытался добавить 0,2 секунды между звонками, но безрезультатно.Сначала это был просто file_get_contents, затем расшифровывался с помощью fsockopen, затем на wget.

Помогите, где искать.Посмотри логи, ничего нет

Ответы [ 2 ]

0 голосов
/ 23 января 2012

Использовать нужно две вещи, во-первых - в свой php-скрипт добавить следующие настройки:

<?php
ignore_user_abort(true);
set_time_limit(0);
...

в NGINX вы должны добавить:

15 минут

proxy_pass http://apache_server:80;
....
proxy_read_timeout 900s;
proxy_send_timeout 900s;

Это должно работать нормально.Если нет - попробуйте увеличить лимит.

0 голосов
/ 23 января 2012

Вы можете попробовать создать сценарий оболочки (bash?), Который выполняет эту работу и заставляет PHP заполнять только txt-файл, который будет служить источником для запуска сценария, поэтому вы можете вызывать shell_exec () из PHPтолько один раз и достичь того же результата ...

...