1

Konu: Datasession Hk.

Bazı sorguları ağ üstünde çalıştırıyorken Yeni bir VFP penceresi açarak çalıştırdığımda 0,12 mili saniye sürüyor ( sorgu sonucunda 19 kayıt dönüyor  ) . Dosya boyutu yaklaşık 90 mb. Ancak aynı dosyayı EXE Program içerisinden sorguladığımda ( Sorgu aynı sorgu , table aynı table ) 8,90 sn.ye sürüyor. Sorguyu farklı bir datasession ile çalıştırdığımda ise sorgu süresi yine ilk halindeki gibi: 0.12 ms.  Bu ne kadar normal?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

2

Re: Datasession Hk.

Datasession degistirince olan durum aklima arada bir "SET" farkli diye getiryor ve ilk aklioma gelenler: EXCLUSIVE, COLLATE,MULTILOCKS
Collate benim bas suphelim

3

Re: Datasession Hk.

Üstad o üç SET komutuna hiç dokunmuyorum desem?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

4

Re: Datasession Hk.

exe dosyan server'daysa client'lara kopyala. her client'in kendi exe si olsun.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

5

Re: Datasession Hk.

Metin hocam bunu en kısa sürede deniycem. Hemen yapamıyorum çünkü program içerisindeki bazı ayarlar, exe dosyanın serverda çalışması için yapılandırılmış durumda. Bilgilendirme için ayrıca teşekkürler.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: Datasession Hk.

exe clientlarda çalıştığında %30 performans sağladım.
clientlarda exe update sorunu çıkıyor onuda yapan bir uygulama olması lazım.

7

Re: Datasession Hk.

erdalyalcin yazdı:

exe clientlarda çalıştığında %30 performans sağladım.
clientlarda exe update sorunu çıkıyor onuda yapan bir uygulama olması lazım.


Erdal Cozumu ;
clientlardaki exe yi update eden yontem

1-clientlar servera network map dedigimiz H: K: L: vs gibi ağ sürücüsü ile bagli olacak
   H:\Kumasci gibi
2-serverda uygulamanin exe sinin oldugu klasorde launcher.exe ve launcher.ini dosyasi olacak
   launcher.ini icerigi (  guncellenmesi gereken dosya adları yazılacak )

erdal.exe gibi yada
data\dd.dbf gibi

3-C:\Kumasci client pc de olacak

Client desktop shortcut parametreleri

Target:
H:\Kumasci\launcher.exe C:\Kumasci

Start in:
C:\Kumasci

burada kısayolun yaptigi , ini dosyasi yardimi ile kontrol edecegi dosyalari kontrol etmek ve eger .ini de belirtilen dosyalar daha yenisi ise onu cagiran yere yenilerinin gonderilmesi , dolayisi ile 40 tane client bile olsa sadece ana makinaya yeni exe yi atmaniz yeterli client ilk baglantida yeni exeyi indirerek calismaya devam edecektir.

gerekli 2 dosyayi buradan www.soykansoft.com/downloads/launcher.zip indirebilirsiniz

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

8

Re: Datasession Hk.

Soykan abi, örnek uygulama için teşekkürler. İleride kullanıcak güzel bir uygulama daha ekledim kendi "yapılacaklar " listeme smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

9

Re: Datasession Hk.

yıllardir kullandiriyorum problemsiz kullaniliyor.

Bu arada launcher.exe icin UT den George Tasker'a tesekkurude borc bilirim.

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

10

Re: Datasession Hk.

onu halletmiştim 1 yıldır kullanıyorlar.
clientlerde path i belirten bir ini dosyası var ve 2 exe var
ilk exe clientdeki exe ile serverdaki exe ye bakıyor serverdaki exe yeniyse cliente kopyalıyor
değilse clientteki asıl exe direk çalışıyor.
bir sorun yok kullanılıyor
yalnız domain ortamında kendi diskine yazma yetkisi olmayan clientler yeni exe yi kendine kopyalarken hata alıyorlar
çetin hocanın yetkilendirmeyle ilgili bir kodu vardı ama uğraşmadım
sistemci ye bırakıyorum o işleri

11

Re: Datasession Hk.

Ben Soykan'dan farklı olarak serverde aşağıdaki kodu tutuyorum, clientler hep onu çalıştırıyor.
Esas kodun yeni versionu var ise onu cliente kopyalayıp, çalıştırıyor.

Visual Fox Pro
*   PROGRAM BAŞLATICI - HER KULLANICI PROGRAMI SUNUCUDAN KOPYALAYIP KULLANIYOR

#DEFINE AYNI_ANDA "AYNI ANDA İKİ AYNI UYGULAMA ÇALIŞMAMALI"
#DEFINE UYGULAMA_ACIK "UYGULAMA AÇIK"
#DEFINE KAYNAK_YOK "kaynak dosya yok"
#DEFINE MUHTEMELEN "muhtemelen sunucuya bağlanmadınız"
#DEFINE SORUNU_COZEMEZSENIZ "SORUNU ÇÖZEMEZSENİZ SİSTEM SORUMLUSUNA DANIŞIN"
#DEFINE LUTFEN_BEKLEYIN "lütfen bekleyin"
#DEFINE YENI_SURUM "programın yeni sürümü kopyalanıyor"
#DEFINE CRT CHR(13)
 
LOCAL lokaldizin, kaynakdizin, lokaldosya, kaynakdosya, uygulama
 
ON ERROR RETURN
uygulama="exeirs9.exe"
lokaldizin="C:\atenuygulamalar"
 
dlldizin="\\tlsanasunucu\fox\vf9rf"
kaynakdizin="\\tlsanasunucu\fox"
 
* önce lokal bilgisayarda dizin oluştur ve vfp dll dosyaları kopyala...
SET PATH TO
IF ! DIRECTORY(lokaldizin)
  MD(lokaldizin)
ENDIF
*vfp9r.dll
*vfp9t.dll
*vfp9renu.dll
*msvcr71.dll
*gdiplus.dll
*msvcr70.dll
*rar.exe  && bunu program içinden kullanıyorum
 
IF !FILE(lokaldizin+"\vfp9r.dll")
  kaynakdosya=dlldizin+"\*.dll"
  lokaldosya=lokaldizin+"\*.dll"
  COPY FILE &kaynakdosya TO &lokaldosya               
  kaynakdosya=dlldizin+"\rar.exe"
  lokaldosya=lokaldizin+"\rar.exe"
  COPY FILE &kaynakdosya TO &lokaldosya               
ENDI
 
SET DEFA TO &lokaldizin
 
** PROGRAMIN ÇALIŞIP ÇALIŞMADIĞINI KONTROL ET
*IF uygulamaçik(JUSTFNAME(ADDBS(lokaldizin)+uygulama))
*  =MESSAGEBOX(AYNI_ANDA,16,UYGULAMA_ACIK)
*  RETU
*ENDI
kaynakdizin="\\tlsanasunucu\fox\prgexe"
 
lokaldosya=ADIR(dosyabilgilerilokal,uygulama)             && lokal dizin: default
kaynakdosya=ADIR(dosyabilgilerikaynak,ADDBS(kaynakdizin)+uygulama) && kaynak dizin
 
IF kaynakdosya= 0 && kaynak yoksa çık
  =MESSAGEBOX( KAYNAK_YOK+CRT+MUHTEMELEN,16,SORUNU_COZEMEZSENIZ)
  RETU && QUIT
ENDI
 
IF lokaldosya=0 OR ; && ilk defa
   ! dosyabilgilerilokal[1,3]=dosyabilgilerikaynak[1,3] OR ;
   ! dosyabilgilerilokal[1,4]=dosyabilgilerikaynak[1,4]
 
  WAIT WINDOW LUTFEN_BEKLEYIN+CRT+YENI_SURUM NOWAIT NOCLEAR
  SET SAFE OFF  && KULLANICIYA İNSİYATİF İÇİN KALDIRILABİLİNİR
  kaynakdosya=ADDBS(kaynakdizin)+uygulama
  lokaldosya=ADDBS(lokaldizin)+uygulama
  COPY FILE &kaynakdosya TO &lokaldosya   
  SET SAFE ON
  WAIT CLEAR
ENDIF
 
** uygulamayı başlat
lnWindowState = 9 && SW_SHOWNORMAL
lnhWnd = 0
lcop = 'open'
lcparms = ""
*lcfilename = "   " ->lokaldosya=lokaldizin+uygulama 
*lcpath = JUSTPATH(lcFilename) ->lokaldizin
lokaldosya=ADDBS(lokaldizin)+uygulama
 
DECLARE INTEGER ShellExecute IN Shell32;
   INTEGER hWnd, STRING @lpOperation,;
   STRING @lpFile, STRING @lpParameters,;
   STRING @lpDirectory, INTEGER nShowCmd
 
lnresult = ShellExecute(0, @lcop, @lokaldosya,;
   @lcparms, @lokaldizin, lnWindowState)
 
IF lnresult < 33  && Error occurred
  IF lnresult = 31 && No file associated
    DECLARE INTEGER GetSystemDirectory IN Win32API STRING @lpBuffer, INTEGER nSize
    lnsize = 260
    lcbuffer = SPACE(lnsize)
    lnsize = GetSystemDirectory(@lcbuffer, lnsize)
    IF lnsize > 0
      lcbuffer = LEFT(lcbuffer, lnsize)
      lcrundll = "RUNDLL32.EXE"
      lcparms = "shell32.dll,OpenAs_RunDLL "
      lnresult = ShellExecute(lnhWnd, @lcop, lcrundll,;
         lcparms + lokaldosya, lcbuffer, lnWindowState)
    ENDI
  ENDI
ENDI
 
RETURN lnresult
 
***********************************************************
** UYGULAMA TEK ÇALIŞMALI
PROCEDURE uygulamaçik
** uygulamaçik("uygulama.exe")
PARAMETERS myApp
=ddesetoption("SAFETY",.F.)
ichannel = DDEINITIATE(myapp,"ZOOM")
IF ichannel =>0
  =DDETERMINATE(ichannel)
  RETU .t.&& QUIT
ENDI
=DDESETSERVICE(myapp,"define")
=DDESETSERVICE(myapp,"execute")
=DDESETTOPIC(myapp,"","ddezoom")
RETURN .f.
 
*********************************************************
PROCEDURE ddezoom
PARAMETER ichannel,saction,sitem,sdata,sformat,istatus
ZOOM WINDOW SCREEN MAX
RETURN
 
 
*kopyalanan dosyalar
 
IF !FILE(lokaldizin+"\vfp9r.dll")
  kaynakdosya=dlldizin+"\vfp9r.dll"
  lokaldosya=lokaldizin+"\vfp9r.dll"
  COPY FILE &kaynakdosya TO &lokaldosya               
 
  kaynakdosya=dlldizin+"\vfp9t.dll"
  lokaldosya=lokaldizin+"\vfp9t.dll"
  COPY FILE &kaynakdosya TO &lokaldosya       
 
  kaynakdosya=dlldizin+"\vfp9renu.dll"
  lokaldosya=lokaldizin+"\vfp9renu.dll"
  COPY FILE &kaynakdosya TO &lokaldosya               
 
  kaynakdosya=dlldizin+"\msvcr71.dll"
  lokaldosya=lokaldizin+"\msvcr71.dll"
  COPY FILE &kaynakdosya TO &lokaldosya               
 
  kaynakdosya=dlldizin+"\gdiplus.dll"
  lokaldosya=lokaldizin+"\gdiplus.dll"
  COPY FILE &kaynakdosya TO &lokaldosya               
ENDI


bu kodu ikinci defa yazıyorum, Metin "akıllara zarar" benzeri bir eleştiri getirmişti,
ancak hala mükemmel işimi görüyor ...

VFP9 SP2