PHP, C # lock deyimi eşdeğer nedir?

5 Cevap php

Eşzamanlılık ve veri bütünlüğünü sağlamak için, nasıl belirli bir nesne için bir karşılıklı dışlama kilit almak istiyorsunuz? Eğer veritabanı içinde kilitleme, ya da bir dosyayı kullanmak gerekir, ya da bu gibi bir PHP desteği şey yapar misiniz?

5 Cevap

Nesneler için hiçbir kilitleme mekanizması var yani PHP çoklu desteklemiyor. Bir dosyayı kilitlemek istiyorsanız flock Bunun için kullanabilirsiniz. Veritabanı motorları genellikle birden fazla bağlantı işleyebilir olarak veritabanını kilitlemek için gerek yok.

Zihin PHP çıplak okuyuculu, bu nedenle paylaşılan bellek, ya da diğer herhangi bir harici kaynaklarını kullanmak ancak eğer gerekli olabilir ... böyle bir şey gerek ihtimal değildir. Böyle bir durumda kullanımı smaphores içinde:

http://www.php.net/manual/en/function.sem-acquire.php

http://www.php.net/manual/en/function.sem-get.php

http://www.php.net/manual/en/function.sem-release.php

dosyalar için akın ediyor.

Eğer veritabanında kilidini kullanmak isteyen varsa, o zaman bu veritabanları için kilit özelliklerini kullanmak gerekir. Hemen hemen tüm veritabanları kilit mekanizması çeşit kullanın.

nesneler için hiçbir şey

Bu semafor desteği vardır

It has flock http://www.php.net/manual/en/function.flock.php

MySQL tablo kilitleme yapabilirsiniz.

PHP nesneler üzerinde kilitlemek gerekmez okuyuculu olmadığından diğerleri gibi, yanıtladım. Eğer veritabanı üzerinde kilitlemek için gerekiyorsa Ancak, transactions bakmak isteyebilirsiniz. Birçok PHP ve MySQL ile işlemleri yapmak için öğreticiler (ve muhtemelen diğer RMDBS için de) vardır.