Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > php-cgi + raw post


Автор: alligator 4.9.2011, 14:49
Всем добрый день, долго отсутствовал на форуме, но вот сейчас столкнулся с проблемой которую не могу решить сам, прошу вашей помощи! Незнаю куда запостить тему, напишу тут
Linux сервер на нем установлен php5-cgi + nginx(всё необходимое для raw post включено)
В сети имееются некие устройства которые отправлют данные на сервер в xml формате.
Задача получить данные , отредактировать и отправить снова на сервер.....
Делаю так:
Код

$size = $_SERVER["CONTENT_LENGTH"];
$stdin = fopen("php://stdin", "r");

while(!feof($stdin)){
$xml=fread($stdin,$size);
}
$file = fopen("1.txt","a+");
fwrite($file,$xml."\r\n");
fclose($file);


отправляю данные скриптом

Код

$request = '<? xml version="1.0" encoding="utf-8" ?>' .
    '<Countries>' .
        '<country>Russia</country>' .
        '<country>USA</country>' .
        '<country>Ukraine</country>' .
        '<country>Germany</country>' .
    '</Countries>';
 
// Create Headers
$header[] = "Host: 94.xx.xx.xx";
$header[] = "Content-type: text/xml; charset:utf-8";
$header[] = "Content-length: ".strlen($request);
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://94.xx.xx.xx');
..curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_HTTPHEADER, $header ); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
 
$result = curl_exec( $ch ); // runs the post
curl_close($ch);


если допустим посмотреть размер то $stdin всегда = 1 а CONTENT_LENGTH по разному в зависимости от данных (((
такое ощущение что данные не попадают в потом STDIN, раньше с потоками не работал, а вот сейчас очень надо..... не хочу ставить апач
Куда копать ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)