我的問題是這樣的 做一個介面 就是兩個軟體資料交換的介面 介紹一下情況
軟體A:我自己的軟體
軟體B:別人的軟體
軟體B動態庫: 軟體B提供的動態庫
流程:軟體A把資料發送給軟體B動態庫,動態庫把資料發送給軟體B,軟體B把處理好的資料發送回動態庫,動態庫把處理好的資料回傳給軟體A
軟體A資料庫←→軟體A←→軟體B動態庫←→軟體B (動態庫和軟體B之間的流程不清楚)
動態庫這么用的
declare integer interface in interface.dll string inputdata,string @outputdata
現在有兩個問題:
1.軟體B處理好資料 把資料回傳給動態庫 這個程序中斷網了 動態庫沒有收到回傳資料 軟體A也收不到 這樣就會造成軟體A的資料與軟體B不一致的情況 (動態庫和軟體B之間可能沒用事務或者因為一些原因沒用事務) 這個情況有沒有好的處理辦法
2.超時問題 遇到兩個軟體資料不一致的情況 經查 可能是因為超時問題
動態庫在被呼叫時有一個日志 是動態庫自己寫的 格式如下
2017-09-08 09:02:49 || 1.呼叫卡相關動態庫!
2017-09-08 09:02:50 || 1.呼叫卡相關動態庫成功!TE0014403|0|||||||00-1B-B9-BB-B3-84|
2017-09-08 09:02:50 || 2.呼叫hxptwebservice服務!
2017-09-08 09:02:50 || 2.呼叫hxptwebservice服務成功
呼叫到呼叫成功 有個時間 正常情況 時差在兩三秒內吧 軟體A都能接收到動態庫回傳的資料
如果時差超過5秒(5秒是估計 具體也不知道) 軟體A收到的回傳資料是空
但是動態庫5秒后又收到了軟體B的資料 這樣就會造成軟體B回傳的資料回傳給了動態庫 但是因為超時 沒有回傳給軟體A
2017-09-08 09:03:39 || 1.呼叫卡相關動態庫!
2017-09-08 09:03:48 || 1.呼叫卡相關動態庫成功!
2017-09-08 09:03:48 || 2.呼叫hxptwebservice服務!
2017-09-08 09:03:48 || 2.呼叫hxptwebservice服務成功!<?xml version="1.0" encoding="UTF-8"?
呼叫動態庫是不是有超時的說法? 如果有 能不能控制這個時間? 或者其它方法來處理這個資料不一致的問題(有問題要即時處理 顧客不能等)
uj5u.com熱心網友回復:
1、程式開頭加 _vfp.AutoYield=.F. 試試。2、動態庫和程式B需要連網或連接什么嗎?要不怎么回傳時間不固定?
3、能將接收的資料做個序號嗎,或者說動態庫支持嗎?每次動態庫回傳資料都加上序號,程式A收到時比較一下之前收到的序號。
uj5u.com熱心網友回復:
呼叫動態庫沒有超時的說法但 hxptwebservice 顯然是使用了 http 協議,這個是有超時一說的
uj5u.com熱心網友回復:
1.這個偶爾一次 可能一周才會碰到一次 不好測驗
2.動態庫要連他們的資料庫 通過專線 這么說吧 運營商架設的一個大型VPN 各地的客戶通過專線連接
3.這個是別人的動態庫 增加這個序號功能應該是不可能的 人家又不聽咱的
我估計還是他們自己的問題吧
我現在是出問題了 給出提示讓操作人員手工對賬 把兩邊的資料對一致 基本上也能解決問題
uj5u.com熱心網友回復:
webservice是有超時
可能是他們動態庫的問題
我只是想知道有沒有超時 舉個例子:是不是呼叫動態庫10秒就得回傳資訊? 還是說20秒 到底有沒有這個時間 如果1分鐘沒回傳 我的程式就一直等著?
感覺可能有個超時的樣子
uj5u.com熱心網友回復:
同意1樓意見uj5u.com熱心網友回復:
可以采用 _vfp.AutoYield=.F.轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/109481.html
標籤:VFP
