Pergunta

Olhando para ler o tamanho do arquivo do SABÃO POST, quaisquer melhores práticas?

$data = fopen('php://input','rb');
$content = fread($data,5000);

$dom = new DOMDocument();
$dom->loadXML($content);

gostaria que o 5000 seja dinâmico como cada tamanho SABÃO POST será diferente ou que isso importa?

Usando fread () seria ótimo

Foi útil?

Solução

Umm. Se você pode lê-lo com 'fread', não vejo nenhuma razão você não pode ler exatamente o mesmo texto com 'file_get_contents()'. Eu uso isso algumas vezes e lembrando que eu tenho tentar ambos.

No que diz respeito a melhor prática para 'fread' vai, o que você precisa é o tamanho do arquivo que você pode obtê-lo de getallheaders ().

Então, se você ainda preferem usar 'fread' aqui está o código.

$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength  = $Headers['Content-Length'];
$content = fread($data,$CLength);

$dom = new DOMDocument();
$dom->loadXML($content);

O código acima é auto explicado por isso não há necessidade de mais explicações. Apenas uma nota pouco pequena que, se o comprimento é mais de 8192 bytes o conteúdo será cortada. Então é melhor você verificar o comprimento de leitura para ver se ele cortada. (Você não precisa ser preocupar se você usar 'file_get_contents()' embora).

Espero que isso ajude

Outras dicas

Você pode tentar o seguinte em vez disso:

$xml = file_get_contents('php://input')

Isso vai ficar todo o conteúdo, não importa o comprimento dos dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top