我有一个CRON作业,每天晚上运行,以通过多个XML文件更新我们的库存系统(从外部来源)。
但是,在偶尔的情况下,XML中会出现错误(我对此无能为力-第3方提供此功能)。
当确实发生错误时,脚本将停止并且不再处理任何文件。有没有一种方法,如果遇到错误,仍然可以导入其余文件?
这是我的代码:
<?php include 'connect.php';
$sql = "DELETE FROM stock WHERE allow_keep!='1'";
mysql_query($sql);
//clear stock table then loop through and add all active users
$query = "SELECT * from users where active='1'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){
$xml = simplexml_load_file(“users/XML_FILE_”.$row['id'].".xml");
foreach($xml->children() as $child)
{
$myquery="REPLACE into stock set
StockID='" . $child->stockid .
"', Make='" . addslashes($child->make) .
"', Model='" . addslashes($child->model) .
"', image='" . $child->image_url_1 .
"', details='" . addslashes($child->description) .
"', price='" . $child->price .
"'";
$result2=mysql_query($myquery) or die(mysql_error());
}
}
?>
感谢我可以从中获得的任何帮助!
如果它是simplexml,它会中断该过程,则只需告诉它内部处理错误,而不是将其输出
libxml_use_internal_errors(true);
$xml = simplexml_load_file(“users/XML_FILE_”.$row['id'].".xml");
if($xml) {
// format is fine, try to load it.
} else {
// leave something in your error log or something
}
如果是mysql,则可以将您的替换查询包装在try / catch块中。
顺便说一句,不要使用mysql函数。使用mysqli或(更好)的PDO函数。如果您担心学习曲线,请从PDO :: exec开始,它不是PDO最优雅的部分,但是如果您习惯于使用变量插值手动进行查询,那么它实际上是替代品。
尝试在中期建立针对性的查询,这将获得十倍的回报。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句