Sıralı Belge Düzenleme Sistemi Oluşturma Best Way (Sadece bir kişi bir anda bir belgeyi düzenleyebilir)

0 Cevap php

Aşağıda birçok kelime, üzgünüm - ama ben de bu durumu açıklamak istedim:

Ben herhangi bir tek belge düzenlemek kullanıcı giriş sağlayan bir sistem oluşturma sürecinde değilim, ama birden fazla kullanıcı aynı anda bu belgeyi düzenlemek için güçlü olmak istemiyorum.

(Sadece başvuru için, benim web sitesinde bu belgelerin sınırsız sayıda planlıyoruz ve kullanıcılar yeni belgeler oluşturabilirsiniz. Esasen, Google Dokümanlar hayal, ama sadece bir kullanıcı bir seferde bir belgeyi düzenlemek için güçlü olmak).

Şu anda her belge, şu anda bu belgeyi düzenlerken kullanıcının kullanıcı id tutan bir veritabanı saklanan değişken için, içeren bir JavaScript / AJAX / PHP çözüm var. Hiçbir diğer kullanıcılar sadece yapılır kadar belgeyi düzenlemek ve belge olabilir

Bir kullanıcı düzenleme (onlar düzenleme penceresi kapalı ya da değişiklikleri kaydettiğiniz ya da anlamına gelir) "done" zaman, belge bir kez daha başka bir kullanıcı tarafından kullanılabilir hale gelir ... ya da en azından should teoride. Ben geliştiriyorum uygulaması için, belge kısa sürede kullanılabilir hale önemlidir. Bu bir düzenleme kullanıcı kendi değişiklikleri kaydeder eğer bir sorun değil, ama bir kullanıcı düzenleme pencereyi kapatır ve herhangi bir değişikliği kaydetmek değilse bir sorundur.

Benim geçerli kurulum, non-save durum için hesap, aslında, diyor bir php sayfasına periyodik AJAX arama yapmak için "Ben hala düzenleme ediyorum. Bana düzenleme zaman iki dakika daha ver." Kullanıcı sayfayı kapatır Öyleyse, belge iki dakika içinde herkes için kullanılabilir hale gelecektir. Ben olsa gerek ne çok uzun. Ben gerçekten (gerçi a <10 saniye gecikme korkunç olmazdı) mümkün olduğunca gerçek zamanlı bu kadar yakın olmak istiyorum.

Bu belgeler kamuya görünür ve onların durumları liste şeklinde görüntülenir. Bir kullanıcı "görünümü mevcut belgeler" sayfa yüklediğinde, ben mevcut süresi dolan düzenleme süreleri ile belgeleri verme ve mevcut olanlarla bunları göstererek, gösterilmesi gereken son belgelerin durumunu kontrol etmek için bir sorgu yapmak gerekir.

Neden bu yöntem kötü: Kullanıcıların bir ton eş zamanlı olarak bu web uygulamasını kullandığınızda, bu yol çok db sorguları ve kontrolleri, ve AJAX güncellemeleri içerir.

Bunu yapmak için daha iyi bir yolu var mı? (Umarım!)

Other info: -I tried using window.unload (to send an AJAX call to an "I'm done editing" page), but there isn't enough time for the ajax call to execute. -I don't think that my hosting provider would allow the use of persistent PHP scripts (and I also don't have any experience with persistent php scripts). -Even if I could use a persistent PHP script, I'd be concerned about the processing involved if I had to run a ton of these scripts simultaneously. (100? 1000? More? I don't know how much processing power that could use.) -I'm not able to run cron jobs. -If I have my editing clients' "I'm still editing" AJAX script run every 10 seconds instead of every minute or so, that's going to be A LOT of AJAX calls per second if I have a lot of users, which would lead to a lot of db access, which wouldn't be great.

Ben burada takdim ettik ihtiyaçları muhtemelen aksi takdirde iyi bir potansiyel çözümler demet ekarte fark, ama kimse bunu yapmanın başka olası yöntemler düşünüyorum olup olmadığını merak ediyorum.

Teşekkürler!

Edit: (a comment alakalı bir yanıt ekleme)

Ne yazık ki, bu gerçek dosyalar değildir. Onlar tür virtual compound files kullanıcıların bireysel katkıları oluşur olduğunuzu. Metin yerine tek dizi olma tam belgeyi yapmak için birleştirir metin (yukarıdan aşağıya) seri gönderilen segmentleri bir dizi oldu, tek bir sayfa düşünün. Her kullanıcı gönderilen segmenti kısa, ve bir veritabanında ayrı ayrı saklanır. --- Garip, biliyorum, ama bu proje için yararlı ve gerekli.

0 Cevap