Ne kadar mail () fonksiyonu 30sn yürütme zamanında kullanılabilir?

5 Cevap php

I have to made a page which will send Email to Newsletter subscribers. There is more then 14000 subscriber. I want to use php mail() function to send Email to them. But I'm afraid that it will not be able to send email to all subscribers for php 30sec max_execution_time limit. Its not possible to test how much Email can be sent by sending Test Email to subscribers. So I want to know how much Email can be sent with mail() function in 30 second max_execution_time limit. Will be very helpful if you can answer me.

başka bir soru - mysql yürütme zamanı da php saymak edilir mi?

Apache version 2.2.13 (Unix) PHP version 5.2.11

5 Cevap

Php max_execution_time ayar özelleştirilebilir. 30 saniye varsayılan ama hiç yürütme zaman sınırı için 0 saniye olarak ayarlayabilirsiniz. Kullan set_time_limit().

set_time_limit(0);

Bunu yaparsanız, tüm e-posta göndermek gerekir.

Saniyede aynı posta sunucusuna birden fazla e-posta gönderme konusunda dikkatli olun. Sen kara listeye almak istemiyorum.

Bir cronjob bu çalıştırmak veya sokacak bir arka plan görevi veya toplu iş için daha uygun başka bir şey kullanmak gerekir.

Lütfen postasunucusu yeterince hızlı olup olmadığını 30sn 14000 e-postalar alabilirsiniz, ama daha bir kaç abone almak ve düzgün durması ne olur?

Belki de her kullanıcı için veritabanında bir bayrak ayarlayabilirsiniz, daha sonra bir arka plan görevi tarafından gönderilen onların e-posta olarak bayrağı sıfırlamak. Posta sunucusu ile ilgili bir sorun varsa o böylece çoğaltmaları önlemek için yardımcı olacaktır.

Yani bir tek cevap mümkün olmadığını pek çok değişkene bağlıdır. Faktörler şunlardır:

  1. CPU hızı
  2. MTA gönderme sistemine mevcut bant genişliği
  3. E-postaları kabul MTA'ın kapasitesi

Öğrenmek için tek yolu çalışmaktır.

Ben bir süre geri projelerinden biri tam bu sorun vardı. Çözelti, gerçek sitesinden kalma posta izole etmektir.

Ben bir e-posta göndermek için denebilecek bir küçük sınıf kodlu. Bu daha sonra bir mail kuyrukta veritabanına saklamak istiyorsunuz bir şablonu e-posta, geçmiş olacaktır. Arka taraftan, ben bir mailler komut her X saniye adında bir cron işi vardı. Script, e-postalar için veritabanı kuyruğuna bakar teslim girişiminde sonra, (zaman damgası göre sıralı) göndermek girişimi için kuyruktan X sayısı kapmak. Gönderilmiş gibi hiçbir hata atıldı varsayarsak, komut mesajı işaretlemek olacaktır. Bir sonraki adım (günlük tutulan) gönderilen ve X günden eski olan Kuyruktaki tüm e-postaları temizlemek olacaktır.

Bu yararlı olduğunu umuyoruz.

Eğer normal mailapp on kişiye aynı posta göndermek istiyorsanız Cidden, normalde on aynı postaları oluşturabilirim ya da sadece gönderme listesine alıcılarını eklerken bir kez mail gönderebilirim?

Cevabı "Ben bir kere göndermek" ise Edit:, sana (hatta http://www.php.net/mail anda birden çok alıcıya göndermek için nasıl tarif edilir gibi) buraya o yöne bakmak gerektiğini düşünüyorum