2015-03-06 1 views
1

Попытка отправить в GSA (поиск в Google). Прекрасно работает для 1 xml-файла. Но я пытаюсь перебрать все файлы в каталоге и передать в gsa цикл, но не может заставить его работать.Отправьте xml в GSA с помощью цикла PHP/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(); 

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; 

?>

Пробовал добавить петлю Еогеасп, но это дает мне ошибку, что файл пуст.

+0

Вы можете удалить его самостоятельно. – j08691

+0

Если это может быть полезно кому-либо еще, лучшим вариантом будет предоставить ответ самостоятельно. Если люди сочтут это полезным, оно может забрать верхние. – TRiG

ответ

0

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

<?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; 
} 
?> 

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