【问题标题】:How to share ms access concurrently with AJAX and FFMPEG如何与 AJAX 和 FFMPEG 同时共享 ms 访问
【发布时间】:2019-12-25 06:11:36
【问题描述】:

我有一个在后端使用 MS Access 数据库的 .NET 网站。我知道 SQL Server 更好,但我现在坚持使用 MS Access。我可以毫无问题地连接并执行插入、更新等操作,除了一个特殊情况:当我执行 ffmpeg.exe 可执行文件时,它会运行一个转换文件的进程大约一分钟并每秒更新一次数据库.在 ffmpeg 运行时,我让 javascript 执行 ajax XMLHttpRequest 帖子,同时获取更新的值,以便我可以更新进度条。

问题是在 ffmpeg 完成之前 XMLHttpRequest 不会执行,但我需要它们同时运行。下面是一个简短的例子,用伪代码形式,带有数字以便于阅读,说明正在发生的事情:

...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;Data Source=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;”到连接字符串,但结果相同。

【问题讨论】:

    标签: ajax multithreading ms-access xmlhttprequest progress-bar


    【解决方案1】:

    发现问题:它在“ffmpeg 启动”步骤中。显然,当它被调用时,它是同步执行的,而不是异步执行的,并且在“ffmpeg 启动”停止之前阻止其他 XMLHttpRequest 执行。一旦我更正了服务器代码以异步执行“ffmpeg 启动”步骤,其他 XMLHttpRequest 就会按预期执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2017-12-22
      相关资源
      最近更新 更多