php &

3 Cevap php

i düzenli olarak yazıyor ve mysql DB tabloları okuyan bir php dosyası var.

i okur ve mysql veritabanında aynı tabloda yazma aynı anda çalışan başka bir yakut dosyası var.

Bu potansiyel sorunlar kurmak olabilir?

3 Cevap

PHP veya Ruby ise MySQL umursamıyor. Yes, multiple clients accessing the database simultaneously ile olası sorunları olsa da, vardır. Yanlış gitmek için a lot mümkündür var.

Sadece bir rastgele örnek:

Müşteri 1 a) tamsayı column_x (= 10) 10 çıkarmak ve daha sonra b) column_y tamsayı bu 10 eklemek niyetinde.

Imagine Müşteri 1) aşama a yapılır, ama) b yapmak için yönetir önce, Müşteri 2 ya column_x veya column_y değer pozitif yalnızca bir şeyler yapmak isteyen, geliyor. Ve yanlışlıkla kadar 10 olarak henüz column_y geldi değil, hiçbir şey yapmaz.

Temel olarak, multiple execution threads with a shared state tüm sorunları alıyoruz.

Bu tür sorunları gidermek için, transactions var. MySQL için tablo depolama motoru bağlı olan birkaç transaction isolations levels sağlar.

Böylece, tüm değişiklikler (ve REPEATABLE READ ve SERIALIZABLE yalıtım düzeyi için okuma) START TRANSACTION ile başlayan ve biten bir veritabanı işlem içinde yürütülmelidir { [(3)]} SQL deyimi. Orada bir sorun rutin ortasında, ve ROLLBACK START TRANSACTION çağrıdan bu yana yapılan tüm değişiklikleri geri almak için çalıştırmak, bir bütün olarak işlem bitirmek mümkün değil.

Eğer MySQL kullanabilirsiniz kullanarak varsayarsak:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

for more you can refer to:
http://dev.mysql.com/doc/refman/5.0/en/commit.html
http://www.tutorialspoint.com/mysql/mysql-transactions.htm

Evet. Vardır. Sen yalnızca bir örnek veri erişen sağlamak için işlemleri kullanarak, ve bir hata varsa, geri dönebilirsiniz olduğunu edilmelidir.

Ayrıca kullandığınız hangi depolama motoru bağlıdır.