目前是有很多的产品导入超时不响应,设置超时时间还是不能解决。有没有好一点的思路,我这边想办法去实现,打算做成插件的形式去满足大众的要求
php导入大文件,一般有2个问题,超时和内存不足,可以通过脚本执行来解决
超时
内存不足
fecmall用console入口的脚本来执行,循环控制使用shell脚本,这样就不担心内存不足的问题
例子: @fecshop/shell/computeProductFinalPrice.sh
@fecshop/shell/computeProductFinalPrice.sh
#!/bin/sh Cur_Dir=$(cd `dirname $0`; pwd) # get product all count. count=`$Cur_Dir/../../../../yii product/price/productcount` pagenum=`$Cur_Dir/../../../../yii product/price/productpagenum` echo "There are $count products to process" echo "There are $pagenum pages to process" echo "##############ALL BEGINING###############"; for (( i=1; i<=$pagenum; i++ )) do $Cur_Dir/../../../../yii product/price/computefinalprice $i echo "Page $i done" done ###### 1.Sync Section End echo "##############ALL COMPLETE###############";
先通过计算,得到pagenum页数,然后通过shell的循环,每次发起一个php执行,执行每页的数据,执行完成释放
pagenum
对于controller action $Cur_Dir/../../../../yii product/price/productcount对应的文件就是: fecshop\app\console\modules\Product\controllers\PriceController.php
$Cur_Dir/../../../../yii product/price/productcount
fecshop\app\console\modules\Product\controllers\PriceController.php
您参考一下自行实现吧。