PHP uzun süre toplu işlemleri yapmak nasıl?

5 Cevap php

I, yüklenen CVS dosya yaklaşık 100000-500000 satırları, benim db tablosunu güncelleştirmek için gerektiğinde ben toplu süreç var. Normalde bazen daha uzun, 20-30 dakika sürer.

Yapmak için en iyi yolu nedir? bu konuda herhangi bir iyi uygulama? Herhangi önermek mutluluk duyacağız

Teşekkürler.

5 Cevap

Eğer ekler bir sürü yapıyorsanız, toplu ekler yapıyorsun? yani böyle:

INSERT INTO table (col1 col2) VALUES (val1a, val2a), (val1b, val2b), (....

Bu dramatik ekler hızlandırır.

Eğer değişiklikleri yaparken Yapabileceğiniz başka bir şey devre dışı indeksleme, o zaman bitmiş olduğunuzda tek seferde endeksleri yeniden sağlar.

Yapıyoruz ve daha fazla fikir almak olabilir ne hakkında biraz daha ayrıntı

PEAR Benchmark optimize edebilirsiniz böylece kod yavaş bölümünü bulmanıza yardımcı olabilir Benchmark_Profiler sınıf vardır adında bir paket var.

Biz büyük bir uygulamada böyle bir özelliği vardı. Biz 9 indeksleri ile bir tabloya csv satır milyonlarca ekleme sorunu vardı. Üstlenmeden çok sonra biz veri eklemek için ideal bir yoldur mysql LOAD DATA INFILE komutu, bir [geçici] tabloya yüklemek için bulduğumuz orada dönüşümleri yapmak ve gerçek birden fazla ekleme sorguları sonucu kopyalayabilirsiniz tablo (INSERT INTO ... SELECT FROM) (tek bir ekleme ama YMMV verilmesi daha iyi performans) her sorgu sadece 50k çizgiler ya da öylesine işleme.

Bu kullanıcının kontrolü altında coz, cron ile bunu yapamam, daha sonra bir kullanıcı tıklayın süreç düğmeleri ve işlem durumunu görmek için günlüklerini kontrol edebilirsiniz

Kullanıcı presler düğmesi, veritabanındaki bir tabloda bir bayrak dedik. Daha sonra bu bayrak için cron işi kontrol var. Eğer varsa, başka türlü değil, işleme başlayabilirsiniz. Uygulanabilir Seni durum güncellemesi (örn.% xx yapılan) bir çeşit göndermek için aynı tabloyu kullanabilirsiniz, böylece kullanıcı ilerleme hakkında bazı görüş vardır.