如何与AJAX和FFMPEG同时共享ms access
我有一个.NET网站,在后端使用MS Access数据库。我知道SQL Server更好,但我现在只能使用MS Access。我能够连接并执行插入、更新等操作,除了一个特定的场景外,没有任何问题:当我执行ffmpeg.exe可执行文件时,它会运行一个转换文件的过程大约一分钟,并每秒更新数据库。在ffmpeg运行时,我让javascript执行ajax XMLHttpRequest post,同时获取更新的值,以便更新进度条 问题是XMLHttpRequest在ffmpeg完成之前不会执行,但我需要它们同时运行。下面是一个简短的示例,使用伪代码,数字便于阅读,说明正在发生的事情:如何与AJAX和FFMPEG同时共享ms access,ajax,multithreading,ms-access,xmlhttprequest,progress-bar,Ajax,Multithreading,Ms Access,Xmlhttprequest,Progress Bar,我有一个.NET网站,在后端使用MS Access数据库。我知道SQL Server更好,但我现在只能使用MS Access。我能够连接并执行插入、更新等操作,除了一个特定的场景外,没有任何问题:当我执行ffmpeg.exe可执行文件时,它会运行一个转换文件的过程大约一分钟,并每秒更新数据库。在ffmpeg运行时,我让javascript执行ajax XMLHttpRequest post,同时获取更新的值,以便更新进度条 问题是XMLHttpRequest在ffmpeg完成之前不会执行,但我需
...ffmpeg started...
var ajax = new XMLHttpRequest(); //1
ffmpeg update 1
var ajax = new XMLHttpRequest(); //2
ffmpeg update 2
var ajax = new XMLHttpRequest(); //3
ffmpeg update 3
var ajax = new XMLHttpRequest(); //4
...ffmpeg ended...
ajax.onreadystatechange... //1
ajax.onreadystatechange... //2
ajax.onreadystatechange... //3
ajax.onreadystatechange... //4
但我需要做的是:
...ffmpeg started...
var ajax = new XMLHttpRequest(); //1
ajax.onreadystatechange... //1
ffmpeg update 1
var ajax = new XMLHttpRequest(); //2
ajax.onreadystatechange... //2
ffmpeg update 2
var ajax = new XMLHttpRequest(); //3
ajax.onreadystatechange... //3
ffmpeg update 3
var ajax = new XMLHttpRequest(); //4
ajax.onreadystatechange... //4
...ffmpeg ended...
我假设ffmpeg正在锁定数据库并阻止ajax读取的执行,但它们应该同时发生并轮流访问数据库。我的连接字符串(在两个更新、读取等中)如下所示:Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\MyDatabase.accdb
每个javascript帖子如下所示:
var obj = { filename: fName };
var myJSON = JSON.stringify(obj);
var url = 'Handler_Uploads.aspx?command=checkconversion&filename=' + fName;
var ajax = new XMLHttpRequest();
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
ajax.send(myJSON);
我应该提到,我曾尝试将“Mode=Share Deny None;”添加到连接字符串中,但结果相同。发现了问题:它在“ffmpeg start”步骤中。显然,当调用它时,它是同步执行的,而不是异步执行的,并且阻止其他XMLHttpRequest执行,直到“ffmpeg started”停止。一旦我更正了服务器代码以异步执行“ffmpeg started”步骤,另一个XMLHttpRequest将按预期执行