PHP SABÃO fread () tamanho POST dinâmico
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
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.