PHP Konular

7 Cevap php

Ben zend kullanarak bir web uygulaması oluşturma, burada ben kullanıcı-A birden fazla kullanıcı (lar) e-posta gönderebilir ve yerden bir arayüz oluşturmak mükemmel çalışıyor ama "kabul tepki" için çok fazla beklemek çünkü hangi kullanıcı-A yürütme zamanı yavaş (e-posta gönderdikten sonra gösterecektir.)

Java'da biz bu görevi (e-postalar göndermek) gerçekleştirmek ve hangi "konu" var Bu dinlenme uygulamayı yavaş yok.

E-posta gönderme: biz çok zaman örneğin sürebilir ki bizim görevleri bölmek hangi ile sadece Java gibi PHP / Zend herhangi bir tekniği vardır.

Teşekkürler ..

7 Cevap

EDIT (teşekkürler Efazati @, bu yönde yeni bir gelişme gibi görünüyor)

http://php.net/manual/en/book.pthreads.php
Caution: (from here on the bottom):

evreleri, oldukça iyi sonuçlar ile bir deneme idi ve. Sınırlamalar veya özelliklerden biri herhangi bir zamanda değişebilir; [...]

/ EDIT

PHP konu yok!

workaround kuyrukta işlerini saklamak (e-posta ile bir tablodaki satırları demek) ve cronjob belirli bir aralık (2 dakika diyelim) adresinden php komut dosyası çağırın ve işler için yoklamak sahip olmaktır. Işleri (php adlı yüklemek zaman aşımı bağlı olarak) birkaç getirme ve e-postalar göndermek sunarken.

Infazını erteleme ana fikri:

  • ana komut kuyruğunda işleri ekler
  • cron komut küçük dilim onları gönderir

Sorunlar:

  • u sıradan silmeden bir e-posta göndermek yok emin olun (en kötü durum, bir kullanıcı 2 dakika aralıklarla bazı istenmeyen rescieves olmak eğer ... olurdu)
  • önce bunu yürütme olmadan bir işi silmek yok emin olun ...
  • Bir puan algoritması kullanarak e-posta sıçrayan ele

Bu tür fork gibi çoklu süreçleri kullanarak içine bakmak olabilir. Aralarındaki iletişim konuları ile kadar basit olmaz (ama sonra, onun tuzaklar ya tüm gelmeyecek), ama sadece e-posta gönderirken eğer varsa, o kadar iletişim kurmak için gerekli olmayabilir hepsi.

Apache süreci çatal yapıyor dikkat edin. Sen beklemiyordum bazı davranışları alabilirsiniz. Eğer uyumsuz yürütme her türlü yapmak için arıyorsanız bu mekanizma kuyruk çeşit yoluyla olmalıdır. Gearman biridir. Zend Sunucu İş Kuyruğu başka bir şeydir. I Do you queue? Introduction to the Zend Server Job Queue bazı demo kodu var. Cron kullanılabilir, ancak uyumsuz işlem genellikle hemen çalıştırmak gerekiyor oysa görevleri çalıştırmak için cron zamanlayıcı bağlı olarak bir sorun olacak. Bir kuyruk sistemi kullanarak diş olmadan bunu sağlar.

https://github.com/krakjoe/pthreads de umut verici görünüyor PThreads dayalı geliştirilen bir Threading uzantısı yok

Orada alt süreçleri oluşturmak için olanak sağlayan, pcntl, ama php mimarisi bu tür için çok iyi çalışmıyor. Muhtemelen uzun süren bir komut dosyası (bir cin) ve bunların yumurtlama katını oluşturarak daha iyiyiz.

PHP dilinin bir parçası olarak, orada taklit bazı yöntemler vardır ama kusursuz değildir parçacığı içermez.

This Google search birkaç potansiyel geçici çözümler gösterir

E-posta göndermek için bir kuyruk sistemi kullanmak ve konuları destekleyen başka bir sistemden e-posta göndermek isteyebilirsiniz. PHP sadece bir araç ve en iyi iş için donatılmış bir araçtır gerekir olduğunu.