aynı anda aynı dosyayı çağırırken engelleme php

2 Cevap php

Ben bazı gerçekten garip bir sorun yaşıyorum.

i wrote a filemanager in PHP with the ability to download files -- which works fine. the whole script is built as one big file.

Büyük bir dosya indirirken şimdi, ben klasör içeriğini görüntüleyen, diyelim ki, aynı anda komut dosyası kullanmak mümkün değilim. Bu yükleme tutmak ama hiçbir şey yok. kısa sürede indirme bitmiş gibi her şeyi tekrar çalışıyor.

aynı anda aynı dosyayı ayrıştırma PHP engelleyen bir şey var mı? Diğer komut bir cazibe gibi çalışır, çünkü ne olursa olsun ben indirirken ya da değilim eğer.

yardım veya belgelere bağlantılar son derece takdir edilmektedir :)

2 Cevap

Oturumları kullanıyor musunuz?

Eğer evet ise, o zaman muhtemelen sorun. Varsayılan oturum işleyicisi oturumu etkin kod idam edilirken kilitli olması dosyalarını kullanır. Pratik olarak bu her kullanıcının sırayla PHP dosyaları çalıştırır anlamına gelir. Bunu çözmek için bir DB kullanan bir özel oturum işleyicisi kullanmanız gerekir. Oku this.

Düzenleme: Ben hiçbir kilitleme ile bir özel oturum işleyicisi yazmak zor olabilir ve çeşitli ince hataları tanıtmak olduğunu işaret etmek istiyorum. Bunu yapmak gerekiyorsa bu konuda daha fazla doküman okuyun!

Edit 2: Bazen (yorumlara bakınız) artık gerektiğinde oturumu kapatmak için () session_write_close yeterli kullanılarak.

Daremon doğru, ama farklı bir oturum işleyicisi kullanmak gerekmez. Eğer ararsanız size dosya göndererek başlamadan önce session_write_close() , oturum dosyası üzerindeki kilit çıkacak ve diğer komut devam etmek gerekir.