MySQL Ekle Beyanı Kuyruğu

2 Cevap php

Biz kullanıcıların giriş bir php komut dosyası işleme için sunulduğu bir ajax uygulaması inşa ediyoruz. Şu anda izleme için bir günlük dosyasına her isteği yazıyoruz. Ben bir veritabanı tabloya bu izleme taşımak istiyorum ama istek sonra bir ekleme deyimini çalıştırmak istemiyorum. Ne yapmak istiyorum MySQL veritabanı üzerinde işlenmesi gereken işlemler (eklemeler ve güncellemeler) bir 'kuyruk' kurulur. Daha sonra kuyrukta işlemleri kontrol ve işlemek için bir cron işi veya süreç kuracak. Şey biz üzerine inşa olabilir ya da biz sadece düz ol için 'metin günlük dosyaları yazmak ve bunları işlemek zorunda olduğunu orada mı?

2 Cevap

Bu istekleri sıraya ve bunları eklemek ve veritabanı onlar için hazır olduğunda, böylece DB sunucusu aşırı yok edeceğiz - Gearman istiyorum.

Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work. It allows you to do work in parallel, to load balance processing, and to call functions between languages. It can be used in a variety of applications, from high-availability web sites to the transport of database replication events. In other words, it is the nervous system for how distributed processing communicates. A few strong points about Gearman:

Diyor ki (özet) here giriş için veritabanlarını kullanma hakkında yeni (ve kalite) sonrası var:

  • Eşzamanlı ekler ile MyISAM kullanın
  • Günlük masa döndürmek ve sorgulamak için UNION
  • (MySQL onları bırakarak önce sessizce sıraya bu sayısına bir sınır olmasına rağmen!) MySQL veya Gearman gibi bir iş işleme ajanı ile gecikmeli uçlar kullanın

HighScalability write up on Gearman.

Eğer gerçekten bu kaçınmak istiyorsanız, size bir dosyaya ham SQL deyimlerini yazmak ve bu cronjob onları işlemek olabilir:

mysql loggingDB logTable < fullLog.sql && > fullLog.sql

MySQL sizin için bazı iş yapabilirsiniz:

INSERT GECİKMİŞ

http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

"INSERT deyimi için GECİKMİŞ seçenek müşterileri varsa, giriş için MySQL kullandığınızda olamaz ya da tamamlamak için INSERT için beklemek gerekmez. Bu yaygın bir durum olduğunu çok yararlıdır standart bir SQL MySQL uzantısı ..."

Ne yazık ki "GECİKMİŞ" varyasyon değil GÜNCELLEME, INSERT kullanılabilir.