• 17-09-2019, 05:37:57
    #1
    Merhaba arkadaşlar.
    Bir haber sitesi projesi üzerinde çalışıyorum. Sorunum basit ama mantığı kuramadım.
    Birden fazla editörü olan haber sitesi için varsayımda bulunursak; aynı anda iki veya daha fazla yönetici aynı haberi düzenlemeye çalışırsa işler karışır. Bunu engellemek istiyorum. Mesela wordpress'te bu sorunun önüne geçilmiş. Xxx adlı yönetici bu içeriği düzenliyor diye uyarı gösteriyora WP'de. Buna benzer bir işlemi nasıl yapabilirim? İçerik tablosunda editing sütunu açıp düzenlenirken 1 versem düzenleme bitince 0 yapsam sorun çözülüyor. Ama bu sefer de örneğin editör düzenlemeyi bitirmeden tarayıcıyı kapatırsa o içerik sürekli düzenleniyor gibi kalacak. Bunu nasıl çözebilirim?
  • 17-09-2019, 05:52:50
    #2
    Sorunu zaten çözmüşsünüz aslında: 1 versem düzenleme bitince 0 yapsam sorun çözülüyor.
    Yine aynı mantıkla session atarsanız, sekme kapandığında, veya direk çıkış yaptığında sessionu silerseniz işiniz görülür.
  • 17-09-2019, 06:47:42
    #3
    İşlem süresi koyabilirsin editlemeye başladığı anki süreden eğer 10 dk geçmiş ise kilidi kaldırırsın
  • 17-09-2019, 12:07:29
    #4
    Scorpion2763 adlı üyeden alıntı: mesajı görüntüle
    Sorunu zaten çözmüşsünüz aslında: 1 versem düzenleme bitince 0 yapsam sorun çözülüyor.
    Yine aynı mantıkla session atarsanız, sekme kapandığında, veya direk çıkış yaptığında sessionu silerseniz işiniz görülür.
    Session ile nasıl halledebilirim ki? Sonuçta kilidin kalkması için sql sorgusu çalışmalı. Pencere yada tarayıcı kapanacağı için de soruyu çalıştıracak bir ortam olmayacak. Cron kullanılabilir belki ama nasıl bir işleyiş olmalı



    KingCoder adlı üyeden alıntı: mesajı görüntüle
    İşlem süresi koyabilirsin editlemeye başladığı anki süreden eğer 10 dk geçmiş ise kilidi kaldırırsın
    Cevabınız için teşekkürler ancak pek kafama yatmadı. Daha işlevsel birşeyler bulunabilir diye düşünüyorum
  • 17-09-2019, 14:32:40
    #5
    GHS
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Makaleyi düzenlemeye başlayan editörün bulunduğu sayfada ajax ile her 10 saniyede 1 durum güncellemesi sağlayabilirsiniz. Ajax ile sürekli son aktivite saati güncellenir. Eğer 1 dakikadan uzunsa diğer editörler düzenleyebilirler.
  • 17-09-2019, 19:40:42
    #6
    GHS adlı üyeden alıntı: mesajı görüntüle
    Makaleyi düzenlemeye başlayan editörün bulunduğu sayfada ajax ile her 10 saniyede 1 durum güncellemesi sağlayabilirsiniz. Ajax ile sürekli son aktivite saati güncellenir. Eğer 1 dakikadan uzunsa diğer editörler düzenleyebilirler.
    Teşekkürler hocam mantıklı olabilir. Benim esasen aklıma takılan şey, tarayıcı kapandığında veya kullanıcının oturumu sona erdiği anda bir sql sorgusu çalıştırılabilir mi?
  • 17-09-2019, 20:29:13
    #7
    parsmedya33 adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler hocam mantıklı olabilir. Benim esasen aklıma takılan şey, tarayıcı kapandığında veya kullanıcının oturumu sona erdiği anda bir sql sorgusu çalıştırılabilir mi?
    Sayfanın kapatılması esnasında bir istek gönderebilirsiniz ama tutarlı olmaz. Tarayıcı işlemlerden sonlandırılabilir, elektrik kesilebilir, bilgisayar crash verebilir. Muhtemelen üstte yazdığım en stabil hali olur.
  • 17-09-2019, 23:37:56
    #8
    GHS adlı üyeden alıntı: mesajı görüntüle
    Sayfanın kapatılması esnasında bir istek gönderebilirsiniz ama tutarlı olmaz. Tarayıcı işlemlerden sonlandırılabilir, elektrik kesilebilir, bilgisayar crash verebilir. Muhtemelen üstte yazdığım en stabil hali olur.
    Haklısınız hocam. Peki WordPress bu işi nasıl yapıyor? Bu konuda bilgi sahibi olan arkadaş var mı acaba? WP'nin mantığını taklit edebilirim belki ama kodları incelemeye kalksam muhtemelen bulamam. WP konusunda uzman Bi arkadaş biliyordur belki?
  • 18-09-2019, 00:06:54
    #9
    Selamlar, aslında mantığı arkadaşların dediği gibi güzel kurgulamışsın editleme işlemi olana kadar sadece o kullanıcıya editleme izni için tabloya userid ile kilitlemeyi 1 yaparsın, ayrıca son_edit_time diye bi alan açıp session değeri kadar ortalama 15dk sonraki zaman damgası ile eklersin. Eğer kullanıcı tarayıcı açık bıraktı veya düzenlemeden çıktı ise başka bir kullanıcı girdiğinde zaman damgasını kontrol ettirirsin eğer süre geçmiş ise diğer userid ile aynı kilitleme işlemi aynı zaman damgasını update edersin tabloya ve sorun çözülmüş olur
    Eğer bu 15 dk çok uzun süre dersen ajax ile 90 ' sn de bir kontrol ettirirsin oda kesmez ben anlık işlem yapmak istiyorum dersen socket.io ve elephant.io yu araştırmanı öneririm
    Ama ben olsam bu aşamada ajax ile 90 'sn de kontrol ettiririm