.ajax에 대한 단일 호출이 원격 측으로 돌아올 때까지 60 초마다 반복되는 문제가 있습니다. 이런 식으로 내 문제를 기록하면 긴 응답 호출의 일부를 생각하게 만들지 만 설정하거나 요청하지 않은 것이 있습니다.내 jquery .ajax GET 호출이 아파치 로그에 여러 번 표시되는 이유는 무엇입니까?
내 응용 프로그램은 Apache에서 제공되며 Linux에서 실행되며 동일한 Apache 서버에서 로컬로 호스팅되는 CGI 스크립트를 호출합니다. 이 CGI 스크립트는 백엔드 호출을 작성하고 백엔드 호출이 완료된 후에 만 리턴합니다. 요즘 원격 서버는 돌아 오는 데 몇 분이 아닌 몇 분이 걸리는 경우가 종종 있습니다.
내 webapp logging은 하나의 호출을 보여 주며, 나의 Apache access_log는 그 호출이 60 초마다 반복되는 것을 보여준다. 그래서 CGI 스크립트에 하나의 GET 요청을하고 아파치 로그는 백엔드가 돌아 오기까지 60 초마다 반복되는 요청을 보여줍니다.
그리고 cgi가 계속해서 반복적으로 호출되기 때문에 원격 서비스에 여러 요청을하고 있는데 이는 매우 나쁩니다.
무슨 일입니까?
관련 자바 스크립트 니펫을
let call = {
callName: 'AddWithFulfillment',
cardholder: 'cardholderRecord',
cardholderHash: 'cardholderHash',
transactionNumber: 6206419,
};
console.log(new Date().toString(), 'call:', JSON.stringify(call));
$.ajax({
data: {
task: JSON.stringify(call)
},
url: '/cgi-bin/makeCall.sh',
dataType: 'json',
cache: false
}).then(
function success(data, textStatus, jqXHR) {
console.log(new Date().toString(), 'success:', JSON.stringify(data));
},
function fail(jqXHR, textStatus, errorThrown) {
console.log(new Date().toString(), 'fail:', errorThrown.message, JSON.stringify(data));
}
);
관련 bash는 스크립트
#!/bin/bash
# extract the task from the query string into a workfile
q_str=$(echo -e ${QUERY_STRING//%/\\x} | sed 's/+/ /g')
task=$(echo "$q_str" | sed -n 's/^.*task=\([^&]*\).*$/\1/p' | sed "s/%20/ /g")
echo "${task}" > /tmp/workfile.txt
rm -f /tmp/workfile.result
touch /tmp/workfile.result
# wait for the result file, dump it into stdout & exit
while [[ 1 ]] ; do
if [[ -s /tmp/workfile.result ]] ; then
echo -e $(cat /tmp/workfile.result)
exit 0
fi
sleep 1
done
exit 1
대표 콘솔 로그
"Sun Oct 15 2017 13:13:56 GMT-0400 (EDT)" call: {"callName":"AddWithFulfillment","cardholder":" <...omitted...> ","transactionNumber":6206419}
"Sun Oct 15 2017 14:07:30 GMT-0400 (EDT)" success: {"callName":"AddWithFulfillment","cardholder":" <...omitted...> ","transactionNumber":6206419, "resultId": -1}
실제 ACCESS_LOG
127.0.0.1 - - [15/Oct/2017:13:56:24 -0400] "GET /cgi-bin/logger.sh?txt1=%22calling.addWithFufilment+sending%3A%22%2C%22%7B%5C%22isProdCall%5C%22%3Atrue%2C%5C%22deviceAlias%5C%22%3A%5C%22JS-0589.1%5C%22%2C%5C%22callName%5C%22%3A%5C%22AddWithFulfillment%5C%22%2C%5C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%5C%22%3A6206419%7D%22&_=1508040892538 HTTP/1.1" 200 20 "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:13:56:24 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:13:57:24 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:13:58:24 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:13:59:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:00:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:01:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:02:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:03:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:04:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:05:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:06:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 - "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:07:25 -0400] "GET /cgi-bin/makeCall.sh?task=%7B%22isProdCall%22%3Atrue%2C%22deviceAlias%22%3A%22JS-0589.1%22%2C%22callName%22%3A%22AddWithFulfillment%22%2C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> TransactionNumber%22%3A6206419%7D&_=1508040892539 HTTP/1.1" 200 242 "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
127.0.0.1 - - [15/Oct/2017:14:07:30 -0400] "GET /cgi-bin/logger.sh?txt1=%22recording.addWithFufilment+params%22%2C%22%7B%5C%22isProdCall%5C%22%3Atrue%2C%5C%22deviceAlias%5C%22%3A%5C%22JS-0589.1%5C%22%2C%5C%22callName%5C%22%3A%5C%22AddWithFulfillment%5C%22%2C%5C%22cardholder%5C%22%3A%7B%5C%22 <...omitted...> resultId%5C%22%3A-1%2C%5C%22TransactionNumber%5C%22%3A6206419%7D%22&_=1508040897606 HTTP/1.1" 200 20 "http://localhost/enrollment/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
제임스,이 추가 사항이 충분하기를 바랍니다. –
추가 HTTP 요청을 작성하는 bash 스크립트 일 수 있습니까? – James
하지만 bash 스크립트의 동작은 어떻게 아파치 로그에 요청으로 표시됩니까? jQuery가 어떻게 든 나를 돕는 것처럼 느껴집니다 ... 그리고 그들은 거의 완벽하게 분리되어 있습니다. 원격 시스템이 돌아 오거나 시간이 초과되어 bash 스크립트가 완료 될 때까지는 모두 동일합니다. 나는 아파치가 아파치를 다시 제출한다고 믿기는 어렵다. 아파치는 그 위에 거대한 실행 시간을 가지고있다. 누군가가 언급했을 것이다. –