我有一个PHP脚本,它打开一个XML文档,获取DOM并修改它,然后它就可以正常工作了.我在定制的WordPress插件中使用它.
据我所知,当多个用户或一个用户同时使用此功能时,XML文件中将没有元素,而只有<?xml version="1.0" encoding="utf-8"?>
个元素
它与PHP函数的异步行为有关吗?我怎么才能解决这个问题呢?我应该对函数进行排队吗?多么?
代码是:
function ym_update_product_xml($p_id, $p_name, $p_status, $p_exerpt, $p_price, $p_inventory){
if($p_id){
$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load(YDE_INC . 'all_products.xml');
$ym_all_products = $xml->documentElement;
$xpath = new DOMXPath($xml);
$_product_name = $xpath->query('/ym_all_products/product[@id="' . $p_id . '"]/product_name');
$_product_status = $xpath->query('/ym_all_products/product[@id="' . $p_id . '"]/product_status');
$_product_exerpt = $xpath->query('/ym_all_products/product[@id="' . $p_id . '"]/product_exerpt');
$_product_price = $xpath->query('/ym_all_products/product[@id="' . $p_id . '"]/product_price');
$_product_invt = $xpath->query('/ym_all_products/product[@id="' . $p_id . '"]/product_invt');
if( $p_name != null ){$_product_name->item(0)->nodeValue = $p_name;}
if( $p_status != null ){$_product_status->item(0)->nodeValue = $p_status;}
if( $p_exerpt != null ){$_product_exerpt->item(0)->nodeValue = $p_exerpt;}
if( $p_price != null ){$_product_price->item(0)->nodeValue = $p_price;}
if( $p_inventory != null ){$_product_invt->item(0)->nodeValue = $p_inventory;}
$xml->save(YDE_INC . 'all_products.xml');
return true;
}else{
return false;
}
}
功能运行正常.