批量导入商品扩展属性【超时】希望高手帮忙优化代码!!

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家



【对于小批量导入还能胜任】

大批量导入时出现超时 ! 请高手帮忙解决,看是不是插入语句存在问题?有没有其它更好的办法!小弟在这里先谢过了

代码如下:
<?php
/**
================================================================================
* 大批量导入时出现超时一直没找到解决办法希望高手指教QQ:819150634全天在线 【隐身】
================================================================================
* 【Pro_Attribute.txt】 结构如下:
* ============================================================================
商品品名N/AN/A品牌 属性。。。。。。。。。。。。。。。。。。。。。

DE10027¥-¥-¥Analog¥Demodulator¥100MHz ~ 2GHz¥50MHz ~ 1GHz¥-22dBm¥25.5dB¥10.75dB¥58mA¥2.7 V ~ 5.5V¥0¥1,000¥[|@@|]
DE10028¥-¥-¥Linear¥Demodulator¥80MHz ~ 1GHz¥40MHz ~ 500MHz¥-¥59dB¥6.8dB¥36mA¥1.8 V ~ 5.25 V¥9¥1¥[|@@|]
DE10016¥-¥-¥NXP¥Demodulator, Amplifier¥-¥-¥-¥-¥-¥26mA¥7.5 V ~ 12 V¥0¥1¥[|@@|]
DE10021¥-¥-¥Analog¥Demodulator¥100MHz ~ 2GHz¥50MHz ~ 1GHz¥-22dBm¥25.5dB¥10.75dB¥58mA¥2.7 V ~ 5.5 V¥0¥50¥[|@@|]
DE10032¥-¥-¥NX¥Demodulator, Amplifier¥-¥-¥-¥-¥-¥26mA¥7.5 V ~ 12 V¥管件¥0¥1¥[|@@|]
DE10042¥-¥-¥NJR¥Demodulator¥-¥455kHz¥-¥-¥-¥660&micro;A¥1.6 V ~ 5.5 V¥0¥1¥[|@@|]
DE10029¥-¥-¥Analo¥Demodulator¥800MHz ~ 2.7GHz¥800MHz ~ 2.7GHz¥-30dBm¥39.5dB¥11dB¥80mA¥2.7 V ~ 5.5 V¥0¥50¥[|@@|]
* ============================================================================
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php'); //引入文件
if ($_REQUEST['act'] == 'list')
{
/**先获得导入数据**/
$url = 'D:\Pro_Attribute.txt';
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码,因为获胜的编码是GB2312
//$getcontent = iconv('gb2312', 'utf-8',file_get_contents($url));
$getcontent = file_get_contents($url);
$getcontent= preg_replace("/\s/","",$getcontent);
$content =explode("[|@@|]", $getcontent);

//每次导入500个商品的属性循环导入
$sls=count($content)%500;
$zcsl=(int)(count($content)/500);
if($sls>0){
$zcsll=$zcsl+1;
}
else
{
$zcsll=$zcsl;
}
for ($csl=1;$csl<=$zcsll;$csl++)
{
$clsl=500*$csl;
if(($sls>0) and ($csl==$zcsll)){
$clsl=$clsl*$zcsl+$sls;
}
$qls=$clsl-500;
for ($ls=$qls;$ls<=$clsl;$ls++)
{
$arr =explode("¥",$content[$ls]);
//货期商品ID以及类型ID
$sql = "select goods_id,goods_type from ".$GLOBALS['ecs']->table('goods')." where goods_name like '$arr[0]'";
if ($res = $GLOBALS['db']->getAll($sql))
{
$goods_ids=$res[0][goods_id];//商品ID
$goods_types=$res[0][goods_type]; //商品类型ID

$arryh="";
$countsl=count($arr);
$countsl=$countsl-3;
//过滤不需要导入的字段
for($sx=2;$sx<$countsl;$sx++)
{
if ($sx==3) {
continue;
}
$arryh=$arryh.$arr[$sx]."¥";
}
$arryh= explode("¥", $arryh);
//获取类型属性列表ID
$sqla = "select attr_id from ".$GLOBALS['ecs']->table('attribute')." where cat_id='$goods_types'";
$resa = $GLOBALS['db']->getAll($sqla);
//导入字段不为空的属性
$arrs=array($resa,$arryh);
for ($l=0;$l<count($arryh);$l++)
{
$arryh[$l]=str_replace("'","’",$arryh[$l]);
if (!empty($arryh[$l]))
{
if (!empty($resa[$l][attr_id]))
{
if (($arryh[$l]!="-"))
{
if (($arryh[$l]!="*")){
$resai=$resa[$l][attr_id];
$arri=$arryh[$l];
//echo $ls." | ".$goods_ids." | ".$resai." | ".$arri."<br>"; //显示都如数据

//调用储存过程插入数据
if($sql=$db->query("call in_goods_attr('$goods_ids','".$resai."','".$arri."')"))
{
$cgs=$cgs+1;
}
else
{
$sbs=$sbs+1;
}
}
}
}
}
}
}
}
$cgs=$cgs+$cgs;
$sbs=$sbs+$sbs;
echo $csl."=============================".$cgs."<br>";

}
echo "成功导入: ".$cgs."/条<br/>";
echo "导入失败: ".$sbs."/条<br/>";
}

?>

回答:
怎么没人理我啊这功能大家都不需要吗

你能具体说一下怎么回事吗

我是直接用phpmyadmin批量导入属性的。