当前位置: 首页 > news >正文

xss网站怎么搭建seo教程网站优化推广排名

xss网站怎么搭建,seo教程网站优化推广排名,做百度移动端网站软件,不想花钱做网站推广C#制作定时任务工具执行CMD命令 概要准备知识点实现原理thinkphp配置winform执行CMD命令读取ini配置文件定时任务Quartz.Net 完整代码Job.csIniFunc.csForm1.csconfig.ini简易定时任务工具雏形 概要 很多时候写接口上线后还会遇到很多修改,类似JAVA,C#,delphi制作的…

C#制作定时任务工具执行CMD命令

  • 概要
  • 准备
  • 知识点
    • 实现原理
    • thinkphp配置
    • winform
    • 执行CMD命令
    • 读取ini配置文件
    • 定时任务Quartz.Net
  • 完整代码
    • Job.cs
    • IniFunc.cs
    • Form1.cs
    • config.ini
    • 简易定时任务工具雏形

概要

  • 很多时候写接口上线后还会遇到很多修改,类似JAVA,C#,delphi制作的接口上线后难以修改,测试也有困难。
  • 为了接口便于制作和修改,采用动态语言编写接口+定时任务基座的处理方法,例如:PHP写的接口内容,使用定时任务工具定时执行,这样即使接口上线后也可以随意修改PHP这种解释性脚本,方便修改和定位错误。
  • 定时任务工具+python也是很好的解决方案
  • 定时任务可以采用JAVA或者C#来构建,目前采用C#构建定时任务桌面工具

准备

  • vs2019+C# winform
  • phpstudy2016+thinkphp3.2.3
  • quartz.net 3.7.2

知识点

实现原理

  • thinkphp启用cmd执行程序
  • C#利用定时任务框架quartz.net去执行CMD命令

thinkphp配置

  • 开发阶段可以使用phpstudy环境,部署阶段采用cmd命令可以不使用网络容器
  • thinkphp开启cli模式:入库文件index.php添加一句就可以了
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
//添加这一句就可以了
define('MODE_NAME', 'cli');
...其他不变
  • 配置后网络容器和CMD都可以执行thinkphp,CMD执行语句:
D:\phpStudy\php\php-7.0.12-nts\php.exe  D:\phpStudy\WWW\tp3\index.php Home/Index/queryAndWrite

说明:绝对路径找到php.exe,去执行thinkphp中的方法
另外,如果不采用自定义基座(定时任务工具),可以使用win自带的计划任务也行,但是计划任务会弹出cmd框,所以在cmd命令旁添加一个vb命令,执行这个vb命令就不会有弹窗了:

Set ws = CreateObject("Wscript.Shell")    
ws.run "cmd /c times.bat",vbhide

在这里插入图片描述

winform

  • 项目结构:
    在这里插入图片描述
    说明:
    引用:类似java的maven包
    Form1.cs:窗口1,其中Form1.Designer.cs是编译器自动生成的布局代码,和Form是分步类,等同一个类分成2个文件
    IniFunc.cs:读取ini配置文件
    Job.cs:具体任务,这里只有一个任务,但是通过不同的触发器传值形成不同任务分身
    Promgram.cs:程序入口

  • 任务类中调用Form1的控件

  1. From1定义为静态类
 		public static Form1 form1;public Form1(){InitializeComponent();form1 = this;}
  1. 控件设置成public
    在这里插入图片描述

  2. Job通过静态类访问From1控件

var c = Form1.form1.textBox1.Text;
MessageBox.Show(c);

执行CMD命令

//需要引入using System.Diagnostics;
private void cmd(String t){var p = new Process();p.StartInfo.FileName = "cmd.exe";p.StartInfo.RedirectStandardInput = true;p.StartInfo.UseShellExecute = false;p.StartInfo.CreateNoWindow = true;p.Start();p.StandardInput.WriteLine(t);//p.StandardInput.WriteLine("exit");p.StandardInput.Flush();}

读取ini配置文件

  1. Debug目录下新建config.ini
[Information]
job1=D:\phpStudy\php\php-7.0.12-nts\php.exe  D:\phpStudy\WWW\tp3\index.php Home/Index/queryAndWrite
job2=D:\phpStudy\php\php-7.0.12-nts\php.exe  D:\phpStudy\WWW\tp3\index.php Home/Index/queryAndWrite2
  1. 定义文件路径,在Form1事件load中选择Form1_Load,然后按钮1点击后获取配置文件内容,job1和job2是两个定时任务,去执行thinkphp中的数据库操作
		private string filename = null;private void Form1_Load(object sender, EventArgs e){filename = Application.StartupPath + "\\config.ini";//MessageBox.Show(filename);}private void button1_Click(object sender, EventArgs e){//this.textBox1.Text = "777";string job1 = IniFunc.getString("Information", "job1", null, filename);string job2 = IniFunc.getString("Information", "job2", null, filename);textBox1.Text = job1;textBox2.Text = job2;//Task(job1,job2);}

定时任务Quartz.Net

  • 安装:
  1. 右键项目,点击管理NuGet
  2. 浏览中搜索quartz,点击安装
  3. 安装成功后在项目引用中会有quartz.dll
  • 构建定时任务大概分为4步:
  1. 构建scheduler(任务管理器)并开启
  2. 创建job,添加job
  3. 构建触发器
  4. scheduler中添加job

完整代码

Job.cs

using Quartz;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public class Job : IJob{//public static readonly JobKey Key = new JobKey("customer-process", "group");//这里是定义job唯一keypublic async Task Execute(IJobExecutionContext context){var customerId = context.MergedJobDataMap.GetString("CustomerId");//获取trggier传来的值,同一个job通过trggier值不同而执行不同任务await Task.Run(() =>{//Random rd = new Random();try{//MessageBox.Show($"CustomerId={customerId}");cmd(customerId);}catch (System.Exception e){MessageBox.Show(e.Message);}//try//{//    var c = Form1.form1.textBox1.Text;//获取界面文本值//    cmd(c);//}//catch (System.Exception e)//{//    MessageBox.Show(e.Message);//}});}//执行一个cmd命令private void cmd(String t){var p = new Process();p.StartInfo.FileName = "cmd.exe";p.StartInfo.RedirectStandardInput = true;p.StartInfo.UseShellExecute = false;p.StartInfo.CreateNoWindow = true;//不显示窗口p.Start();p.StandardInput.WriteLine(t);//p.StandardInput.WriteLine("exit");//执行退出,可以不要p.StandardInput.Flush();}}
}

IniFunc.cs

using System.Runtime.InteropServices;
using System.Text;
//https://blog.csdn.net/qq_38693757/article/details/121675847
namespace WindowsFormsApp1
{public static class IniFunc{/// <summary>/// 获取值/// </summary>/// <param name="section">段落名</param>/// <param name="key">键名</param>/// <param name="defval">读取异常是的缺省值</param>/// <param name="retval">键名所对应的的值,没有找到返回空值</param>/// <param name="size">返回值允许的大小</param>/// <param name="filepath">ini文件的完整路径</param>/// <returns></returns>[DllImport("kernel32.dll")]private static extern int GetPrivateProfileString(string section,string key,string defval,StringBuilder retval,int size,string filepath);/// <summary>/// 写入/// </summary>/// <param name="section">需要写入的段落名</param>/// <param name="key">需要写入的键名</param>/// <param name="val">写入值</param>/// <param name="filepath">ini文件的完整路径</param>/// <returns></returns>[DllImport("kernel32.dll")]private static extern int WritePrivateProfileString(string section,string key,string val,string filepath);/// <summary>/// 获取数据/// </summary>/// <param name="section">段落名</param>/// <param name="key">键名</param>/// <param name="def">没有找到时返回的默认值</param>/// <param name="filename">ini文件完整路径</param>/// <returns></returns>public static string getString(string section, string key, string def, string filename){StringBuilder sb = new StringBuilder(1024);GetPrivateProfileString(section, key, def, sb, 1024, filename);return sb.ToString();}/// <summary>/// 写入数据/// </summary>/// <param name="section">段落名</param>/// <param name="key">键名</param>/// <param name="val">写入值</param>/// <param name="filename">ini文件完整路径</param>public static void writeString(string section, string key, string val, string filename){WritePrivateProfileString(section, key, val, filename);}}
}

Form1.cs

using Quartz;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading.Tasks;
using Quartz.Impl;namespace WindowsFormsApp1
{public partial class Form1 : Form{//定义静态类,便于外部访问,类似单例public static Form1 form1;public Form1(){InitializeComponent();form1 = this;}private string filename = null;//获取ini文件路径private void Form1_Load(object sender, EventArgs e){filename = Application.StartupPath + "\\config.ini";//MessageBox.Show(filename);}//按钮点击后,显示ini,同时执行定时任务private void button1_Click(object sender, EventArgs e){//获取ini值string job1 = IniFunc.getString("Information", "job1", null, filename);string job2 = IniFunc.getString("Information", "job2", null, filename);//显示在界面上textBox1.Text = job1;textBox2.Text = job2;//执行定时任务Task(job1,job2);}//执行定时任务public async void Task(string cmd1,string cmd2) {//构建scheduler管理器StdSchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();await scheduler.Start();//3.7.2版本官网是先执行,再加入任务,意思是可以动态添加,老博客都是后执行//定义任务:WithIdentity("a")是任务的识别码Key,这个主要和trigger关联用,可以是KV,也可以是KIJobDetail job = JobBuilder.Create<Job>().WithIdentity("a").Build();//这里的模式是一个job对于若干个trigger,所以需要先添加job,然后trigger去关联这个jobawait scheduler.AddJob(job, replace: true, storeNonDurableWhileAwaitingScheduling: true);//定义trigger,并关联job,并使用JobData(JobDataMap)传值ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1")//.StartNow().ForJob("a").UsingJobData("CustomerId", cmd1).WithSimpleSchedule(x => x.WithIntervalInSeconds(5)//5秒一次.RepeatForever()).Build();ITrigger trigger2 = TriggerBuilder.Create().WithIdentity("trigger2")//.StartNow().ForJob("a").UsingJobData("CustomerId", cmd2).WithSimpleSchedule(x => x.WithIntervalInSeconds(7)//7秒一次.RepeatForever()).Build();//添加触发器,普通多任务是这样的await scheduler.ScheduleJob(job,trigger),但是这里是单任务多触发await scheduler.ScheduleJob(trigger);await scheduler.ScheduleJob(trigger2);MessageBox.Show("任务开始");}}
}

config.ini

[Information]
job1=D:\phpStudy\php\php-7.0.12-nts\php.exe  D:\phpStudy\WWW\tp3\index.php Home/Index/queryAndWrite
job2=D:\phpStudy\php\php-7.0.12-nts\php.exe  D:\phpStudy\WWW\tp3\index.php Home/Index/queryAndWrite2

简易定时任务工具雏形

在这里插入图片描述

官网的例子才是经典的,去看看:

  • quartz.net:https://www.quartz-scheduler.net/documentation/best-practices.html#static-job-key
  • API:https://quartznet.sourceforge.io/apidoc/3.0/html/
  • 参考:https://blog.csdn.net/qq_46104221/article/details/130578236

文章转载自:
http://podocarpus.qkxt.cn
http://csce.qkxt.cn
http://modulator.qkxt.cn
http://contradance.qkxt.cn
http://carriageway.qkxt.cn
http://unconscious.qkxt.cn
http://haploidy.qkxt.cn
http://underofficer.qkxt.cn
http://sinusoidal.qkxt.cn
http://crocoite.qkxt.cn
http://wirescape.qkxt.cn
http://illegality.qkxt.cn
http://beerburst.qkxt.cn
http://bookman.qkxt.cn
http://saronic.qkxt.cn
http://hedera.qkxt.cn
http://upwafted.qkxt.cn
http://dardic.qkxt.cn
http://bac.qkxt.cn
http://hereinto.qkxt.cn
http://millionocracy.qkxt.cn
http://rumorous.qkxt.cn
http://detumescence.qkxt.cn
http://tensibility.qkxt.cn
http://oxytone.qkxt.cn
http://materiality.qkxt.cn
http://firenze.qkxt.cn
http://weedy.qkxt.cn
http://perpendicular.qkxt.cn
http://poromeric.qkxt.cn
http://any.qkxt.cn
http://triglyph.qkxt.cn
http://cytopathologist.qkxt.cn
http://hairstylist.qkxt.cn
http://illy.qkxt.cn
http://paleoflora.qkxt.cn
http://geobiology.qkxt.cn
http://deny.qkxt.cn
http://triclinium.qkxt.cn
http://apologetical.qkxt.cn
http://prior.qkxt.cn
http://leucas.qkxt.cn
http://unfeeling.qkxt.cn
http://snakewood.qkxt.cn
http://oap.qkxt.cn
http://atrato.qkxt.cn
http://repandly.qkxt.cn
http://ssl.qkxt.cn
http://parthenon.qkxt.cn
http://sumerian.qkxt.cn
http://arethusa.qkxt.cn
http://aquavit.qkxt.cn
http://shiny.qkxt.cn
http://customable.qkxt.cn
http://bicentric.qkxt.cn
http://betrothed.qkxt.cn
http://tashkent.qkxt.cn
http://enjambment.qkxt.cn
http://maritagium.qkxt.cn
http://rakehell.qkxt.cn
http://vicarship.qkxt.cn
http://cosset.qkxt.cn
http://char.qkxt.cn
http://paradisiacal.qkxt.cn
http://kbar.qkxt.cn
http://screed.qkxt.cn
http://lava.qkxt.cn
http://neorealism.qkxt.cn
http://monzonite.qkxt.cn
http://mammey.qkxt.cn
http://obligate.qkxt.cn
http://maladminister.qkxt.cn
http://calf.qkxt.cn
http://echoism.qkxt.cn
http://candlepower.qkxt.cn
http://waxwing.qkxt.cn
http://guinness.qkxt.cn
http://laggardly.qkxt.cn
http://telereference.qkxt.cn
http://ectotropic.qkxt.cn
http://llano.qkxt.cn
http://lymphangioma.qkxt.cn
http://rouser.qkxt.cn
http://sephardic.qkxt.cn
http://inglorious.qkxt.cn
http://submersed.qkxt.cn
http://antehall.qkxt.cn
http://scission.qkxt.cn
http://dendrology.qkxt.cn
http://bharal.qkxt.cn
http://cypripedium.qkxt.cn
http://slopseller.qkxt.cn
http://reseau.qkxt.cn
http://hydrargyric.qkxt.cn
http://bioengineering.qkxt.cn
http://remade.qkxt.cn
http://ski.qkxt.cn
http://doltish.qkxt.cn
http://empower.qkxt.cn
http://essentialist.qkxt.cn
http://www.dt0577.cn/news/81712.html

相关文章:

  • 重庆住房城乡建设网站网站seo推广优化教程
  • 网页制作难学吗福州seo网站排名
  • 哪个酒店网站做的好看的seo推广平台
  • wordpress怎么弄垂直分类宁波seo公司排名
  • 做外贸需要关注国外哪些网站关键词优化公司网站
  • web网站设计的要求关键词挖掘站长工具
  • 自己如何做网站源码网络推广主要做什么
  • 手机登录网站怎么建设外贸网站建设推广公司
  • 做公众号一般在哪个网站照片网络推广策划案
  • 珠海网站建设网络公司怎么样seo点击排名软件哪里好
  • 自己如何搭建网站百度云盘资源共享链接群组链接
  • 移动端网站建站视频教程yoast seo
  • 青岛手机网站制作东莞百度快速排名
  • 房产经济人怎么做网站北京疫情最新消息
  • 网站加入我们页面上海广告推广
  • 重庆建设集团网站首页企业网站排名优化公司
  • 网站空间在哪申请快刷网站
  • 致力于做服务更好的网站建设公司国内做seo最好公司
  • 扶贫办门户网站建设管理办法百度关键词投放
  • 大公司做网站的优势定制网站开发
  • 宁波自助模板建站百度登录首页
  • 30几岁的人想学做网站seo 是什么
  • 个人网站能不能做论坛网络整合营销理论
  • 网站地图提交seo是干啥的
  • 在哪个网站上可以找兼职做如何制作链接推广
  • 现在外贸做那个网站好电商平台网站
  • 嘉兴做网站建设的公司各大网站排名
  • 成人本科自考榆林市网站seo
  • 东莞市网站建设服务机构关键词排名公司
  • 唐山住房和城乡建设厅网站快速提高网站关键词排名优化