【问题标题】:Submit xml to GSA with PHP / foreach loop使用 PHP / foreach 循环将 xml 提交给 GSA
【发布时间】:2015-03-06 15:28:24
【问题描述】:

试图提交给 GSA(谷歌搜索应用程序)。适用于 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 循环,但这给了我一个文件为空的错误。

【问题讨论】:

  • 您可以自行删除。
  • 如果这可能对其他人有用,最好的选择是自己提供答案。如果人们觉得它有用,它可能会获得支持。

标签: php search curl google-search-appliance


【解决方案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;
}
?>

它对我来说很好用。我希望它会有所帮助:)

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2015-02-26
    • 1970-01-01
    • 2011-06-01
    • 2013-01-24
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多