Отправьте xml в GSA с циклом PHP/foreach

Попытка отправить в GSA (поисковое приложение Google). Отлично работает для 1 xml файла. Но я пытаюсь просмотреть все файлы в каталоге и отправить их в gsa с циклом, но не могу заставить его работать.

<?php

$target_url = 'http://1.1.1.1:19900/xmlfeed';

$header = array('Content-Type: multipart/form-data');

$directory = 'xml';

if (! is_dir($directory)) {
    exit('Invalid diretory path');
}

$files = array();

foreach (scandir($directory) as $file) {
    if ('.' === $file) continue;
    if ('..' === $file) continue;

}

//print $file;



$fields = array(
'feedtype'=>'incremental',
'datasource'=>'testing',
'data'=>file_get_contents(realpath($file))
//'data'=>file_get_contents(realpath('test.xml')) //works fine

);



$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_TIMEOUT,120);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

$return = curl_exec($ch);

if (curl_errno($ch)) {
    $msg = curl_error($ch);
}

curl_close ($ch);



echo $return;

?>

Пытался добавить цикл foreach, но это дает мне ошибку, что файл пуст.


person Jay Parker    schedule 06.03.2015    source источник
comment
Вы можете удалить его самостоятельно.   -  person j08691    schedule 07.03.2015
comment
Если это может быть полезно кому-то еще, лучшим вариантом будет дать ответ самостоятельно. Если люди сочтут это полезным, это может собрать плюсы.   -  person TRiG    schedule 07.03.2015


Ответы (1)


Вы должны сделать запрос для каждого файла. Поместите выполнение curl в цикл foreach, и все должно быть в порядке:

<?php

$target_url = 'http://1.1.1.1:19900/xmlfeed';
$header = array('Content-Type: multipart/form-data');
$directory = 'xml';

if (! is_dir($directory)) {
    exit('Invalid diretory path');
}

$files = array();

//List all files in the directory
foreach(glob($directory."/*.*") as $file) {

  //Check the file extension
  $ext = pathinfo($file, PATHINFO_EXTENSION);
  if($ext != 'xml') continue;

  //Add the fields
  $fields = array(
    'feedtype'=>'incremental',
    'datasource'=>'testing',
    'data'=>file_get_contents($file)
  );

  //Post the request
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
  curl_setopt($ch, CURLOPT_TIMEOUT,120);
  curl_setopt($ch, CURLOPT_URL,$target_url);
  curl_setopt($ch, CURLOPT_POST,1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

  $return = curl_exec($ch);

  if (curl_errno($ch)) {
    $msg = curl_error($ch);
  }

  curl_close ($ch);

  //Print the result for each file
  echo "Result for " . basename($file) . " is : " . $return;
}
?>

Он отлично работает для меня. Надеюсь, это поможет :)

person Vrogar    schedule 28.07.2015