model($model);
//大致统计下当前记录数
$count = 0;
if( method_exists($modelObj,'fcount_csv') ){
$count = $modelObj->fcount_csv($filter);
}else{
$count = $modelObj->count($filter);
}
//修正商品批量上传导出商品类型模板的bug
if($export_model == 'ome_mdl_goods' && $count == 0 && $filter['_gType']){
return false;
}
$queue_type = 'normal';
if($count <= 1000){
//分片任务识别这个丢进快队列处理
$queue_type= 'quick';
}
//单个客户最大5个任务上限
if(!$this->is_pass($msg)){
echo $msg;
exit;
}
$data['app'] = $app;
$data['model'] = $model;
$data['task_name'] = app::get($app)->model($model)->export_name.'导出-'.date('Y-m-d');
$data['op_id'] = kernel::single('desktop_user')->get_id();
$data['create_time'] = time();
$data['file_name'] = '';
$data['status'] = 'sleeping';
$data['filter_data'] = serialize($filter);
$data['total_count'] = 0;
$data['finish_count'] = 0;
$data['use_slave_db'] = 1;
$data['export_ver']= 2;
app::get('taoexlib')->model('ietask')->save($data);
$task_id = $data['task_id'];
//导出任务加队列
$push_params = array(
'data' => array(
'app' => $data['app'],
'model' => $data['model'],
'task_id' => $task_id,
'filter_data' => $data['filter_data'],
'op_id' => $data['op_id'],
'queue_type' => $queue_type,
'task_type' => 'exportsplit',
),
'url' => kernel::openapi_url('openapi.autotask','service')
);
$flag = kernel::single('taskmgr_interface_connecter')->push($push_params);
header("content-type:text/html; charset=utf-8");
if($flag){
echo "";
}else{
echo "";
}
return true;
}
function export_id($data){
return app::get('taoexlib')->model('ietask')->export_id($data['task_id']);
}
function clean(){
//当前导出文件存储模式
$storageLib = kernel::single('taskmgr_interface_storage');
$isLocalStorage = $storageLib->isLocalMode();
//当前导出数据存储模式
$cacheLib = kernel::single('taskmgr_interface_cache');
$isLocalCache = $cacheLib->isLocalMode();
$ietaskObj = app::get('taoexlib')->model('ietask');
$list = $ietaskObj->getExpireIetask();
if($list){
foreach($list as $row){
//数据缓存是本地的,删除本地缓存
if($isLocalCache){
$this->delDirAndFile(DATA_DIR.'/export/cache/'.$row['task_id']);
}
//识别是否存在本地文件
if($isLocalStorage && !empty($row['file_name'])){
@unlink(DATA_DIR.'/export/file/'.$row['file_name']);
}
// 删除远程文件
$storageLib->delete($row['file_name']);
//删除任务
$ietaskObj->remove($row['task_id']);
}
}
}
//删除指定目录以及目录下的文件
function delDirAndFile($path, $delDir = true){
if (is_dir($path)){
if($handle = opendir($path)){
while(false !== ($item = readdir($handle))){
if ($item != "." && $item != "..") {
if (is_file($path."/".$item)){
@unlink($path."/".$item);
}
}
}
closedir($handle);
if($delDir){
@rmdir($path);
}
}
}
}
function is_pass(&$msg){
$ietaskObj = app::get('taoexlib')->model('ietask');
$total = $ietaskObj->getValidCounts();
if($total >= 10){
$msg = "";
return false;
}
return true;
}
}