Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何与AJAX和FFMPEG同时共享ms access_Ajax_Multithreading_Ms Access_Xmlhttprequest_Progress Bar - Fatal编程技术网

如何与AJAX和FFMPEG同时共享ms access

如何与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完成之前不会执行,但我需

我有一个.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将按预期执行