Facebook üzerinden örnek vererek başlayayım soruma:

  • Biri mesaj attığında (Facebook daki gibi mesajların birden fazla kişi gönderildiğini düşünürsek bir mesaj için 20 kişiye mail gönderilmesi gerekebilir.)

  • Bir fotoğrafa etiketlendiğinde(Aynı fotoğrafa 10 kişinin etiketlendiğini düşünürsek aynı anda 10 kişiye mail gönderilmesi gerekir.)

  • Davet edildiğim event iptal edildiğinde(evente 50 kişi davet edilmişse aynı anda 50 kişiye mail gitmesi lazım)

  • Yakın arkadaşlarım bir şey paylaştığında (Paylaşım yapan kişiyi yakın arkadaşı olarak eklemiş 100 kişi varsa aynı anda 100 kişiye mail gönderilmesi gerekir)

Gelmek istediğim nokta yukarıda bahsettiğim gibi bir işlemde bir çok kişiye mail göndermemiz gerekebiliyor. Fakat mail gönderimi, işlem gerçekleşirken yapılırsa işlemi yapan kişi browser ekranında uzun bir süre bekleyebilir çünkü mail gönderimleri zaman alan işlemler.

Nasıl bir yol izlenmeliki hem işlemi yapan kişi mail gönderimlerinden dolayı uzun süre işlemin gerşekleşmesini beklemesin ve mailler ilgili kişilere zamanında gitsin?

soruldu: 27 Oca '13, 04:31

alexander's gravatar image

alexander
185172023
cevap kabul oranı: 33%

değiştirildi: 27 Oca '13, 04:32

Biraz araştırma yaptım şöyle birşey var gearman . Daha önce kullanan veya nasıl çalıştığı hakkında bilgisi olan var mı?

(27 Oca '13, 06:49) alexander alexander's gravatar image

Bunun için linux tabanlı cronjob kullanımı veya windows içindeki scheduled task öneriliyor. mail gönderilecek kişileri veritabanında bir tabloya aktarırsınız. zamanlanmış görev ile örneğin dakikada bir bu tabloyu kontrol edip mail gönderilmesi gereken kullanıcılara mail gönderen bir exe yi çalıştırırsınız. bu işlem browser ile alakalı olmadığı için kullanıcıyı bekletmez. yada php deki exec komutu gibi bir komut ile bir exe çalıştırabilirseniz işlemin arka planda gerçekleşmesini sağlaycaktır.

permanent link

cevaplandı: 27 Oca '13, 04:38

numankaraaslan's gravatar image

numankaraaslan
1.8k253749
cevap kabul oranı: 19%

Email gönderilicekler tablosunun içerisine hangi bilgileri atmalıyız ? Mail gidecek kişileri ve mail içeriğini ilgili işlem gerçekleşirken bu tabloya insertmi yapmalıyız. Örneğin 50 kişiye mail gidilecekse kullanıcı işlemini yaparken bu tabloya ben 50 satır insert mi yapacağım ?

(27 Oca '13, 04:53) alexander alexander's gravatar image

fakat şu durumda kişilere mail gidip gitmediğini nasıl bilebiliriz? hem bu asenkron bir çalışma ve ekstradan bir iş zamanı olmaz mı?

(27 Oca '13, 05:06) ercet00ilk ercet00ilk's gravatar image

Kişiler ve içeriğin yanında gönderme işleminin sonucuyla alakalı da bir alan konulabilir. Scheduled task çalıştıktan sonra kayıtlar update edilir. Mesela default 0 olur. Gönderim başarılıysa 1 yapılır, başarısızsa 0 olarak kalır ve bir sonraki çalışma zamanına kalmış olur.

(27 Oca '13, 06:37) mhkoca60 mhkoca60's gravatar image

en basit anlamda "gönderilecek" diye bir tabloda "id, gönderilecek_adres, içerik" şeklinde 3 sütun olması yetecektir mesela. evet 50 satır insert edeceksiniz. kimlere mail gidip gitmediğini bilemeyiz ama maillerin en azınadn gönderildiğini bilmemiz mümkün. smtp bağlantısı kurulur ve mail başarı ile gönderilirse mail gönderme metodu bir durum kodu döndürecektir. mesela 0 başarısız, 1 başarılı, 2 smtp hatası... gibi. bu sonuçlar da gönderilemedi tablosuna aktarılabilir. yada gönderilecek tablosundan hiç silinmez 5 dakika sonra tekrar denenir. artık orası programcıya kalmış.

(27 Oca '13, 06:37) numankaraaslan numankaraaslan's gravatar image

Modern sistemlerde, özellikle de Facebook gibi mühendisliğin son noktaya getirildiği sistemlerde bu tip işlemler "asenkron" yapılır.

Örneğin istemci tarafından yapılan bir asenkron bir javascript ajax isteği, iş bittiğinde çalışacak şekilde ayarladığınız fonksiyonları çağıracak şekilde programlanır. İstek giderken arayüzün cevap vermesini engellemez, böylece daha akıcı bir kullanıcı deneyimi sağlanır.

İşte facebook'un kullandığı dil ve internet altyapısı da bu şekilde asenkron çalışmayı destekler. Böylece e-posta gönderimi anında arka planda thread ya da mesaj döngüsünde başlatılarak kullanıcının diğer işlemlerine geçilir.

permanent link

cevaplandı: 05 Şub '13, 00:54

nurettin's gravatar image

nurettin
2.2k2441
cevap kabul oranı: 14%

değiştirildi: 05 Şub '13, 00:54

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×19
×16
×6
×3

Soruldu: 27 Oca '13, 04:31

Görüntüleme: 826 kez

Son güncelleme: 05 Şub '13, 03:14

powered by BitNami OSQA