Page 1 of 1

API: при отправке POST с помощью curl ошибка 500

Posted: Sat Feb 22, 2014 2:00 am
by achyorny
делаю POST запрос с помощью curl несколько подряд для suspend не одного юзера, а мне выдает ошибку 500,
но если один раз за скрипт выполняю curl то ошибки нет

в eror_log
2014/02/22 03:50:57 [error] 6557#0: *261153 upstream prematurely closed connection while reading response header from upstream, client: <мой дом ip>., server: <мой домен>, request: "GET /cron/suspend.php HTTP/1.1", upstream: "http://<ip сервера>:8080/cron/suspend.php", host: "<мой домен>"


вот код примерный

Code: Select all

$curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, 'https://server:8083/api/');
 curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($curl, CURLOPT_POST, true);
 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array('user' => 'admin','password' => 'xxxxxx','cmd' => 'v-suspend-user', 'arg1' => 'u1')));
 $answer = curl_exec($curl);
curl_close($curl);

$curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, 'https://server:8083/api/');
 curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($curl, CURLOPT_POST, true);
 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array('user' => 'admin','password' => 'xxxxxx','cmd' => 'v-suspend-user', 'arg1' => 'u2')));
 $answer = curl_exec($curl);
curl_close($curl);
в этом коде первый curl выполняется затем вываливается 502 bad gateway
u1 блокируется, если сделать повтор F5, то второй u2 блокируется

Re: API: при отправке POST с помощью curl ошибка 500

Posted: Sat Feb 22, 2014 3:03 pm
by achyorny
разобрался, это из-за того что после suspend одного юзера выполняется рестарт

Code: Select all

if [ "$restart" != 'no' ]; then
    $BIN/v-restart-web
    $BIN/v-restart-dns
    $BIN/v-restart-cron
fi
т.е. нужен второй аргумент 'no'
наприм
v-suspend-user u1 no
и в конце цикла делать
v-restart-dns
v-restart-cron
и в конце
v-restart-web
т.к. после этой команды идет рестарт apache и остальные уже не выполняются