php - ConsoliBYTE QuickBooks PHP DevKit:两个队列,相同的 DSN,自动运行冲突
问题描述
在我开始更改代码之前,这是我们的 QWC 应用程序条目所做的......
enqueue
HOOK_LOGINSUCCESS
通过QUICKBOOKS_ADD_CUSTOMER
,QUICKBOOKS_ADD_INVOICE
和QUICKBOOKS_ADD_RECEIVEPAYMENT
(ID
order_number )在线订购enqueue
CSV 数据在不同的HOOK_LOGINSUCCESS
viaQUICKBOOKS_ADD_SALESORDER
(ID
文件名)
两个队列使用相同的 dsn 并且在手动或单独自动运行时工作正常。当两个任务都自动运行并最终在同一分钟内执行时(不可避免),来自 #1 的函数映射会以某种方式与来自 #2 的函数映射混合在一起。
我们注意到这个问题是在 #2 期间抛出了错误No registered functions: CustomerAdd was throwed but the ID
from #1. 所以看起来#2 建立了连接,但#1 在“同一分钟”冲突期间发送了请求/响应。
我们现在将两个任务安排为以不同的Every_Min间隔(24 和 25)自动运行,因此冲突不那么频繁,但宁愿完全没有冲突。
我在想deny_concurrent_logins
(和/或deny_reallyfast_logins
)处理程序选项应该阻止它们同时运行,但要在对繁忙的在线商店进行“可能”更改之前确定。
注意:我知道我们可以通过为每个任务使用不同的方法来避免这种情况dsn
,但无法想象这是必要的。
解决方案
推荐阅读
- java - useDelimiter() 打印空白空间
- java - 从 csv 文件读取数组后,如何将数组传递给 ComboBox?
- c++ - 为什么这个向量的向量超出范围?
- asp.net-core - 如何使用 ASP 使会话在 IIS 中工作。网络核心?
- javascript - koa-router 中的 new Router() 和 Router() 是否相同?
- javascript - 使用 Vue axios 和 Django Python 后端上传文件
- java - 有什么方法可以在 Java 中创建字符串文字类型吗?
- c - 如何在 C 中使用 const 数据实现链表?
- linux - 回显 grep 结果
- python - 如何在没有弃用警告的情况下检查 python / Gtk 3.0 中的当前屏幕尺寸?