public void AsyncPaper()
{
while (true)
{
try
{
var jsonText = RedisHelper.BlockPopItemFromList("async_write_paper_list"); Program.MyFrm.SetTextMessage("【试卷生成】发现一张试卷需要生成...");
var o = (JObject)JsonConvert.DeserializeObject(jsonText);
var paperId = o["paper_id"].ToString();
var version = int.Parse(o["version"].ToString());
var paperType = o["paper_type"].ToString();
var juanType = o["juan_type"].ToString();
var guid = o["guid"].ToString();
var paperName = o["paper_name"].ToString();
//要生成的文件位置
var currentdate = DateTime.Now.ToString("yyyyMMdd");
var ext = version == ? "docx" : "doc"; //生成试卷
var savedocpath = GeneratePaper(paperId, paperType, juanType, version); var forUrlencoderUrl = "";
var forIsoUrl = "";
if (GlobalVar.Version == "")
{
var uploadkey = "down/Paper/" + currentdate + "/" + guid + "." + ext;
//上传到云存储中去
var targetbucket = GlobalVar.WorkingBucket;
OssUtil.SimpleUpload(savedocpath, targetbucket, uploadkey);
OssUtil.GetOssFileUrl(targetbucket, uploadkey, paperName + "." + ext, out forUrlencoderUrl,out forIsoUrl);
}
else
{
var di = new DirectoryInfo(GlobalVar.LocalPath + "Paper\\" + currentdate );
if (!di.Exists)
{
di.Create();
} var uploadkey =di.FullName + "\\" + guid + "." + ext;
var fi = new FileInfo(savedocpath);
string command = @"copy "+ savedocpath +" "+uploadkey;
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");
p.Close(); //回写缓存JuDuanPaperDownPrex
var Url = "/dsideal_yy/html/down/Paper/" + currentdate + "/" + guid + "." + ext + "?flag=download&n=" + paperName + "." + ext;
var bytes = Encoding.UTF8.GetBytes(Url);
forIsoUrl = Convert.ToBase64String(bytes);
RedisHelper.Hash_Set("paper_down_" + guid, "forIsoUrl", forIsoUrl); Url = "/dsideal_yy/html/down/Paper/" + currentdate + "/" + guid + "." + ext + "?flag=download&n=" + HttpUtility.UrlEncode(paperName, Encoding.UTF8).ToUpper() + "." + ext;
bytes = Encoding.UTF8.GetBytes(Url);
forUrlencoderUrl = Convert.ToBase64String(bytes);
}
RedisHelper.Hash_Set("paper_down_" + guid, "forUrlencoderUrl", forUrlencoderUrl);
RedisHelper.Hash_Set("paper_down_" + guid, "forIsoUrl", forIsoUrl);
Program.MyFrm.SetTextMessage("【试卷生成】成功生成一张试卷!");
}
catch (Exception err)
{
Program.MyFrm.SetTextMessage("【试卷生成】错误原因:" + err);
}
}
}

武汉天喻的NFS 磁盘问题的更多相关文章

  1. 关于nfs共享目录的使用技巧

    nfs客户端的使用 1.查看nfs服务器信息挂载信息 1)在客户端,要查看nfs服务器上有哪些共享目录 # showmount -e nfs服务器ip 在客户端,要查看nfs服务器上有哪些客户端的目录 ...

  2. 如何利用Direct NFS克隆数据库

    CloneDB是Oracle 11.2.0.3推出的一项新特性,它利用的了11g新引入的Direct NFS.它直接利用目标数据库的备份,无需将备份COPY到克隆环境下,使得一个备份可以克隆多个不同用 ...

  3. linux的mount(挂载)NFS 共享,命令详解

    Linux下挂载(mount)光盘镜像文件.移动硬盘.U盘.Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着 linux系统 ...

  4. NFS无法启动解决方式

    今天一台挂载nfs磁盘的服务器出现异常,数据不能写入,执行 df -h 卡住不动. 登录nfs server查看发现nfs为启动. [root@server10-13 web]# exportfs [ ...

  5. zabbix日常监控NFS(新加一)

    有时候主机使用NFS文件挂载的方式来存储.备份.共享文件:但有时会出现断开的现象. 1.客户机现状 [root@tianxia6 ~]# df -h Filesystem Size Used Avai ...

  6. linux下如何挂接(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享

    首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的.      命令格式:      mount [-t vfstype] [-o options ...

  7. nfs挂载无法卸载

    故障现象:今天发现服务器的upload负载很高,到18左右,同时df查看磁盘命令卡住 用top\vmstat\iostat查看并未发现可以服务或进程. 上网查发现可能是nfs问题. 卸载nfs挂载的方 ...

  8. LINUX挂接UNIX系统NFS文件共享

    类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍 ...

  9. linux的mount(挂载)命令详解

    本文介绍mount命令的用法,以及技巧光盘镜像文件.移动硬盘及U盘的方法. 挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用 ...

随机推荐

  1. 4.Mongodb数据查询2

    1.limit &skip (1)Limit 方法limit():用于读取指定数量的文档 语法: db.集合名称.find().limit(NUMBER) 参数NUMBER表示要获取文档的条数 ...

  2. css3 3D

    开通黄钻 Css3 -3D效果<!DOCTYPE html><html lang="en"><head> <meta charset=&q ...

  3. centos 6.X 关闭selinux

    SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.在这种访问控制体系的限制下,进程只能访问那 ...

  4. 打开Vim/Vi代码高亮

    由于新装Vim/Vi 默认是没有打开代码高亮配置的,就看到有朋友一次次到网上去找各种配置.其实Vim默认带来配置文件的样本的,只需拷贝过来就可使用. 在用户根目录(~)中新建vim的配置文件 .vim ...

  5. 《Cracking the Coding Interview》——第4章:树和图——题目1

    2014-03-19 03:30 题目:判断一个二叉树是否为平衡二叉树,即左右子树高度相差不超过1. 解法:递归算高度并判断即可. 代码: // 4.1 Implement an algorithm ...

  6. 17、bootStrap组件

    1.bootStrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 2.字体图标 ①不要和其他图标混合使用 ②只能对内容为空的元素起作用 3.下拉菜单 <di ...

  7. Java线程的两种实现形式

    一.创建线程的第一种方式:继承Thread类 class Demo extends Thread{ @Override public void run() { super.run(); for(int ...

  8. 孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类尝试第一天

     孤荷凌寒自学python第四十六天开始建构自己用起来更顺手一点的Python模块与类,尝试第一天 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 按上一天的规划,这是根据过去我自学其它编程语 ...

  9. 爬虫:Scrapy15 - 调试(Debugging)Spiders

    考虑下面的 spider: import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = ...

  10. NYOJ 简单数据结构

    NYOJ 2 括号配对问题 栈的简单应用.可使用STL. #include <iostream> #include <cstdio> #include <cstring& ...