请问PHP用拼接字符串的形式生成xml文件为什么会丢失数据?
核心代码:
$orderCount = 0; //实际订单推送订单数量
foreach ($newData as $key => $val)
{
$str .= " <Order>\r\n";
$str .= " <OrderId>{$val['lp_number']}</OrderId>\r\n";//LP号
$str .= " <LabelUrl>{$val['pdf_url']}</LabelUrl>\r\n";//面单地址
$str .= " <Products>\r\n";
foreach ($val['goods'] as $value) {
$str .= " <Product>\r\n";
$str .= " <Number>{$value['sku_number']}</Number>\r\n";//条形码
$str .= " <ExternalId>{$value['external_product_id']}</ExternalId>\r\n";//天猫ID
$str .= " <Description>{$value['sku_name']}</Description>\r\n";//,名称
$str .= " <Quantity>{$value['count']}</Quantity>\r\n";//数量
$str .= " </Product>\r\n";
}
/*
* step4 生成时间
*/
OrderFinally::updateAll(
[
'is_success' => '1',
'convert_num' => '1',
'update_time' => date('Y-m-d H:i:s', time())
],
[
'order_number'=>$val['order_number']
]);
$str .= " </Products>\r\n";
$str .= " </Order>\r\n";
$orderCount++;
}
$str .= " </Orders>\r\n";
$str .= "</Data>\r\n";
$fullPath = $path . "/{$fileName}"; //文件的全路径
$file = fopen($fullPath, 'w');
fwrite($file, $str);
fclose($file);
生成的xml格式
这是一个定时脚本任务,自动执行的时候,它会有一定的概率少数据,手动执行的时候数据都是正常的.
比如一个订单下的实际商品是7个,但是最后生成XML文件的时候,商品只有5个了.
目前判断脚本本身应该是没问题的,请教各位还有哪种原因会造成偶发性的丢失数据.(推测过可能是服务器硬盘有坏道造成的偶发性丢失数据,但是感觉也不像~)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以加个日志,即把每次取出来的数据和生成的 XML 代码一起存进数据库,到时候一起比对,就知道是取数据的问题还是拼接 XML 的问题了。
早上就看到你这个问题了,但是一直没有描述清除,这会儿又刷到了。