문제

PHP 5.2.6에서 NUSOAP를 사용하고 있으며 최대 메시지 크기는 1000 바이트 (의미있는 일을하기가 어렵음)입니다. 이 세트는 엔드 포인트의 WSDL에 있습니까? 아니면 이것이 NUSOAP에서 구성 할 수있는 것입니까?

도움이 되었습니까?

해결책

"1000 바이트 제한"에 대한 FUD와 관련하여 ... NUSOAP_CLIENT SONCECODE를 찾아서 한도가 효과적이라는 것을 발견했습니다. 디버그 출력.

이는 모든 데이터가 처리되어 웹 서비스 (크기에 관계없이)에 전달되지만 디버그 로그에 처음 1000 바이트 (또는 더 정확하게 : 문자) 만 표시됩니다.

코드는 다음과 같습니다.

$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));

// send
$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);

분명히 볼 수 있듯이 getHTTPBody() 통화는 전체를 사용합니다 $soapmsg, 그리고 디버그 출력 만 처음 1000 자로 제한됩니다. 이것을 바꾸고 싶다면 substr() 귀하의 요구에 맞는 전화를 받거나 간단히 대체하십시오. $soapmsg (따라서 모든 것이 디버그 출력에 표시됩니다).

이것은 실제로 전송 된 데이터에 대한 실제 제한과 전혀 관련이 없어야합니다. 물론 보낼 수있는 내용의 크기를 제한하는 다른 요인이있을 수 있습니다 (예 : PHP 스크립트의 RAM 제한 설정, HTTP 구현 제한 또는 사용 가능한 가상 메모리가 부족한 경우). NUSOAP로 보낼 수있는 데이터의 "1000 바이트 제한"과 같은 것.

다른 팁

나는 PHP에 대한 지나가는 것이 좋으며 NUSOAP 패키지를 전혀 사용한 적이 없습니다. 그러나 비누 메시지의 크기는 운송 매체에 의해서만 제한되어야합니다. HTTP의 경우, 거의 무한대가되어야합니다 (포스트 요청 양식의 16384 바이트 제한은 비누로 인한 것이 아니며 브라우저 제한에서 나온 것입니다 (실제로는 존재하지 않을 수도 있지만 확실하지 않음). ).

NUSOAP의 저자/관리자를위한 연락처 주소를 찾고 직접 요청하는 것이 좋습니다. WSDL에 무언가가 없다면 (그리고 WSDL 사양에 전체 메시지 바디 크기를 제한하는 WSDL 사양에 아무것도 기억하지 않는 한, 개별 매개 변수 (XML 스키마 패싯을 통해), 전체 본체가 아닌). 툴킷에있는 것 같습니다.

프로덕션 박스에서는 PHP 5.2.5 내장 비누 기능을 PHP 4에서 서버 및 NUSOAP로 사용하고 1MB보다 큰 메시지를 성공적으로 전송했습니다.

나는 어느 제품에도 제한이 있다고 생각하지 않지만 php.ini에서 설정을 확인해야합니다.

max_input_time        (defaults to 60)

이것은 각 스크립트가 입력을 구문 분석 할 수있는 시간입니다. 구문 분석이 완료되기 전에 시간이 다가 오면 스크립트도 실행되지 않습니다.

사이드 노트 : 가능하면 SOAPCLIENT/SOAPSERVER PHP 확장 클래스로 마이그레이션하는 것이 좋습니다. NUSOAP는 특히 캐시와 관련하여 무거운 부하 상황에서 그 자체로 신뢰할 수없는 것으로 판명되었습니다. 때때로 우리는 NUSOAP가 단순히 WSDL 정의를 "잊어 버리는"것을 보았고 WSDL 모드에서 작동하는 것을 보았습니다. 기이한...

비누 메시지를 보내거나받는다면 말하지 않았습니다. 당신이 보내고 있다면, 나는 Nusoap이 얻기보다는 포스트를 통해 전송되고 있는지 확인할 것입니다 (아마도 코드를 파헤쳐 야 할 것입니다. 문서를 드문 발견했습니다). 받는 경우 메모리 및 데이터 크기와 같은 것에 대해 php.ini 설정을 확인하십시오. 실제로, 메모리 제한을 확인하십시오.

메시지 크기는 일부 하드 코드 값보다 PHP 메모리 한계에 의해 제한 될 것이라고 생각합니다. 적어도 문제없이 6.5MB 문자열을 보낼 수있었습니다. 8MB 문자열을 보내려고했을 때 Nusoap.php (내 서버는 PHP에 대해 64MB 제한) 내부에서 메모리 예외를 얻지 못했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top