2011-09-13 3 views
0

이것은 아마 이해가되지 않지만 그게 내가 여기있는 이유입니다. Frankenstein이 두 번째 왼쪽 팔을 필요로하는 것처럼 더 많은 "기능"을 시도하고있는 웹 사이트를 상속했습니다.응용 프로그램이 php의 컬을 통해 직접 다르게 작동합니다.

일부 응용 프로그램은 전국의 다양한 서비스 제공 업체에 약 10 개의 API 호출을 통해 따옴표를 가져옵니다. 몇 가지 다른 URL을 생성하고 mcurl을 사용하여이를 병렬로 얻으십시오. 이들 중 어느 것도 html을 반환하지 않으며, 각각 단일 API를 쿼리하고 데이터베이스를 업데이트합니다.

실행하는 데 몇 초가 걸리고 API 쿼리를 수행 할 때 휠이 회전하지만 데이터베이스의 내용은 업데이트되지 않습니다. 요청 된 각 URL을 로그에서 볼 수 있습니다. 이 URL 중 하나를 브라우저의 주소 표시 줄에 넣으면 정상적으로 작동합니다. API가 호출되고 데이터베이스가 업데이트됩니다.

기다려주세요, 더 있습니다! 이러한 개별 스크립트를 디버깅하기 위해 (출력이 없으므로) fwrite()를 사용합니다. 이것은 브라우저의 주소 표시 줄에 URL을 사용할 때 작동하지만 모든 스크립트는 mcurl을 통해 실행됩니다. (멀티 curl_execute()가 정확합니다.)

즉, PHP는 curl을 사용하여 스크립트를 실행할 때 mysql 데이터베이스를 업데이트하지 않으며 파일을 열 수 없게됩니다. 로그에서 GET 요청을 잘라내어 브라우저의 주소 표시 줄에 붙여 넣으면 이러한 작업이 가능합니다.

이제이 소프트웨어는 라이브 사이트에서 잠시 동안 제작되어 예상대로 작동합니다. 내 로컬 컴퓨터에서 개발을하고 있는데, 이것이 실패한 부분입니다. 아주 단순한 무언가가되어야합니다.

답변

0

가 요청과 함께 전송받을 HTTP 헤더에 뭔가 있어야한다 --Dave

.

웹 서비스 코드에 액세스 할 수있는 경우 (게시물에는 언급되어 있지 않음) 해당쪽에 헤더를 덤프하거나 파일에 쓰거나 전자 메일로 보내고 mcurl 통화 및 브라우저 호출.

$_SERVER 배열에는 이름 앞에 "HTTP"이 붙습니다.

또 다른 아이디어는 mcurl 또는 브라우저의 출처 인 클라이언트 측에서 도청하는 것입니다. 그러나 네트워크를 스니핑하지 않고 어떻게하는지에 대해 솔직하게 확신하지는 못합니다.

+0

나는 세션과 다른 쿠키를 살펴 보았지만 그곳의 유일한 정보도 URL 자체로 전송됩니다. 브라우저 또는 $ _SERVER 변수 검사가 없습니다. API 호출이 적절하다고 생각합니다. 제대로 작동하지 않는 별도의 로컬 URL입니다. –

관련 문제