2012-01-23 4 views
0

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

<?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.

Если звонок не отправляется, только сразу после команды. Я попытался добавить 0.2 секунд между вызовами безрезультатно. Сначала это был только файл_get_contents, затем транскрибированный fsockopen, а затем на wget.

Помогите, где искать. Журналы выглядят, нет ничего

ответ

0

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

+0

Прошу этот код: $ cmd = ''; foreach ($ data AS $ v) { \t $ cmd. = '' '. $ V.' "'; } shell_exec ('wget -O /dev/null'.$cmd); И снова сервер посылает ошибку 504 – user1164478

0

использования необходимы две вещи, первая - в вашем 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

Я пробую то, что вы говорите. И не работает. – user1164478

+0

Мой скрипт работает хорошо. Он отправляет ответ и статус 200. Все URL-адреса вызывают мой скрипт. После того как весь сервер звонков отправит 504 ко всем запросам. Также user1164478

+0

Может быть проблемой в shell_exec, попробуйте заменить его файлом_get_contents, например –