我从Amazon API获得XML响应
$dom = new DOMDocument();
$dom->loadXML($response->toXML());
我尝试过使用PHP的filesize功能,但它没有通过echo输出任何内容。
$xml1 = simplexml_load_string($dom->saveXML());
$filesize = filesize($xml1);
尝试这个
$filesize = filesize($dom->saveXML());
没有输出文件大小。
我得到的空白xml响应是354字节,所以我试图做这样的事情
if ($filesize > '360') {
$file_name = "List_".time().".xml";
file_put_contents($file_name, $dom->saveXML());
}
但是我只能在使用file_put_contents
之后才能获得文件大小......就这样
$file_name = "ListOrders_".time().".xml";
file_put_contents($file_name, $dom->saveXML());
$filesize = filesize($file_name);
echo '<br />filesize: ' . $filesize . '<br />';
在使用file_put_contents
?
答案 0 :(得分:1)
尝试使用PHP的内置输出缓冲系统。 PHP output buffering
ob_start();
echo $dom->saveXML();
$filesize = ob_get_length();
$currentXML = ob_get_clean(); // Return the Template
if ($filesize > '360') {
$file_name = "List_".time().".xml";
file_put_contents($file_name, currentXML);
}
答案 1 :(得分:1)
对于您的特定用途,您可以使用该条件的否定或相反版本AFTER file_put_contents来检查它是否低于360,然后如果条件失败则使用unlink
函数删除该文件。
$file_name = "ListOrders_".time().".xml";
file_put_contents($file_name, $dom->saveXML());
$filesize = filesize($file_name);
if($filesize < 360){
unlink($file_name);
}
答案 2 :(得分:0)
filesize()
的问题在于它需要文件路径。您的文件尚未保存,因此您无法依赖它。
$dom->saveXML()
返回一个xml字符串。将其保存在变量中并使用strlen()
检查文件的长度,并确定文件大小。
$strXML = $dom->saveXML();
$filesize = strlen($strXML);
$maxFileSize = 300;
if ($filesize < $maxFileSize){
file_put_contents("myfile_name.xml",$strXML);
}