我有一个CRON工作,每晚运行以通过多个XML文件更新我们的库存系统(来自外部源)。
然而,正如偶尔的情况一样,错误出现在XML中(我无能为力 - 第三方提供此功能)。
当发生错误时,脚本停止运行,不再处理任何文件。有没有办法,如果遇到错误,仍然导入剩余的文件?
这是我的代码:
<?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());
}
}
?>
感谢我能得到的任何帮助!
答案 0 :(得分:3)
如果是simplexml那个中断过程的人,只需告诉deal with errors internally而不是输出它们
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块中。
BTW,不要使用mysql函数。使用mysqli或(更好)PDO功能。如果您害怕学习曲线,从PDO :: exec开始,它不是PDO中最优雅的部分,但如果您习惯于使用变量插值手动进行查询,那么它几乎可以替代。尝试在中期建立准备好的查询,它将获得十倍的回报。