PHP: E-posta neden zaman aşımını gönderin

2 Cevap

i eblast uygulama geliştirmek var

Program bazı alıcılara bir e-posta göndermek için kullanmaktır

Alıcıların e-posta bir xls dosyasından kapmak olacak

ve programı 10 e-posta her zaman göndermek için ayarlayın ve 30 saniye uyku etti

ve () ob_flush kullanın; ve gömme (); dışarı Önyüzde süreci ve ekranın buhar koymak

dün müvekkilim (o etrafında 10hours almalıdır) 9000 alıcılar ile test

ve o programı durdurmak etti bana, ve ben günlük dosyası programı 65XX e-postaların durdu olduğu işareti vardır bulundu

Bu program zaten (7hour civarı) 6XXX e-posta gönderdi demek

ve bu sorun cron işi ne, ama ne zaman exec Web tarayıcısı rağmen sadece asla olmayacak

uzun süre uyku ile ilgili tüm çünkü benim frd söyledi?

ve o, ancak benim uygulama zaten ayarlamak için cron işi var, cron işi kullanmanızı öneririm

müşteri sadece derhal e-posta göndermek için bir özelliği var istiyorum

çözmek için başka bir çözüm? php dediğimiz bir linux komutunu kullanın ve bir php e-posta gönderme komut excu?

2 Cevap

Apache veya IIS uzun çalışan süreçleri yanıltıcıdır. Bir şey işinizi kaybedersiniz web sunucusu ya da bir zaman aşımı yeniden başlatma gibi olur sorundur. Bu basit tutmak ve bir cron işi haline yapmak daha iyi ama sen meydan için ise çevresinde elde etmek mümkündür.

Ben bir veritabanı ve sürekli yukarı ve çalışma olup olmadığını kontrol etmek için sayfayı vurur bir betik içine benim sürecinin durumunu kaydederek arada webserver yeniden başlatıldıktan kazanılmış ettik. Uzun süren işlemi ilk yüklediğinde yüzden çalıştırıyor olmalıdır eğer kontrol eder ve o ya da bir iş değil, devam etmelidir. Senin durumunda bu excel dosyasının satır numarası olabilir.

Bu ekstra iş olmaktan çok biter ve çok dikkatli olmak gerekir. Projenizin seslerden Bahsettiğin Cron yol giderek basit tutmak istiyorum.

My solution is, try to set your cronjob to run every minutes. However, you should save the state of your cronjob so that it didn't run twice.

Ben genellikle bu şekilde (bu cron her dakika çalıştırmak için tasarlanmıştır unutmayın) yapın:

if(stat_check_file('cron.stat'))
{
     die("Found CRON.STAT, Exit!");
}
else
{
    stat_create_stat_file('cron.stat');
    //do your long process here...
}
stat_delete_stat_file('cron.stat');

function stat_check_file($filename)
{
    global $rootdir;

    return file_exists($rootdir.'/'.$filename);
}

function stat_create_stat_file($filename){
    global $rootdir;

    touch($rootdir.'/'.$filename);
}

function stat_delete_stat_file($filename)
{
    global $rootdir;

    if(stat_check_file($filename))
    {
        @unlink($rootdir.'/'.$filename);
    }
}

Now, on your cronjob, simply load the xls, run it and write log to either database / file. then, on your panel, read that log and display it so that your client will see right now, there's xxx email sent and xxx email to go.