भेजने वाले मेल को तेज़ करने के लिए कैसे मैंने ईमेल की भारी मात्रा में हैंडल करने और पारित पैराम के अनुसार अपनी सामग्री को पार्स करने के लिए थोक-ईमेलिंग कक्षाओं का एक सेट लिखा है। यदि मैं अपने डेटाबेस से 1000 यादृच्छिक प्राप्तकर्ताओं और 1000 यादृच्छिक प्रेषकों पर एक ईमेल का परीक्षण करता हूं, तब तक जब तक स्क्रिप्ट भेजता है() भाग (मैंने अभी इसके लिए टिप्पणी की है), मुझे लगभग 2 सेकंड का प्रदर्शन मिलता है, और 20 एमबी पीक मेमोरी , जो माहान है।PHP, sendmail और ट्रांसपोर्ट -
हालांकि, अगर मैं प्रेषण भाग को अनदेखा करता हूं, तो भेजने में 30 सेकंड लगते हैं। यह अस्वीकार्य है, और मैं इसे किसी भी तरह से गति देना चाहता हूं। यह परीक्षण से स्पष्ट है कि विलंब $ मेल-> भेजें() कॉल के अलावा किसी अन्य के कारण नहीं होता है, जैसे कि यह लूप जारी रखने और अगली ईमेल भेजने से पहले कुछ वापस करने का इंतजार कर रहा है।
मैं क्या सोच रहा हूं: मैं प्रेषण() कॉल को कैसे बढ़ा सकता हूं? इसे तेजी से बनाने के लिए मैं क्या कर सकता हूं? मैंने दो भेजने के तरीकों का उपयोग करने की कोशिश की:
- ज़ेंड एसएमटीपी परिवहन, सर्वर से सीधे कनेक्ट और बस भेजना। इसमें प्रति 1000 ईमेल 30 सेकंड लगते हैं।
- Zend_Mail के माध्यम से Sendmail। प्रत्येक ईमेल तैयार करने के बाद बस Zend_Mail के भेजें फ़ंक्शन को कॉल करें। इसमें 60 सेकंड लगते हैं।
कृपया ध्यान दें कि कतार निश्चित रूप से एक विकल्प है, और मैंने इसे अपनी कक्षाओं में बनाया है। यह सब एक क्रॉन सक्रिय है और यह एक आकर्षण की तरह काम करता है। लेकिन मैं वास्तविक भेजने और इसे गति देने के बारे में सोच रहा हूं। तो, वास्तविक भेजें() कॉल।
अगर मैं गलत हूं तो मुझे सही करें, लेकिन एक अच्छी MySQL क्वेरी हमेशा फ़ाइल पढ़ने के लिए बाहर रह जाएगी। क्यूइंग तंत्र पहले से ही किया जा चुका है, और अभी इसमें कोई सुधार की जरूरत नहीं है। इसी प्रकार, हमारे ईमेल प्रत्येक एक अलग सामग्री के साथ हैं। इसलिए जब हम 2 सेकंड में 1000 ईमेल भेज रहे हैं, उनमें से प्रत्येक के पास एक अलग प्राप्तकर्ता, अलग प्रेषक और विभिन्न सामग्री है। मेरा मानना है कि आप यहां प्रदर्शित इस पहलू को केवल थोक ईमेलिंग में उपयोगी हो सकते हैं, हां? जहां सामग्री सभी संदेशों में समान है? यदि नहीं, तो सवाल अभी भी बनी हुई है - क्या यह डेटाबेस में कतार में तेजी से हो सकता है? मैं उलझन में हूँ। – Swader
मैंने सोचा कि समस्या उत्पन्न नहीं हो रही है! :) कुछ अनुकूलित मेल सर्वर हो सकते हैं, जो संदेश के गैजिलियन को थोक-लोड करने में सक्षम होंगे। Anycase - यह php की sendmail विधि से तेज़ होगा। प्रत्यक्ष सर्वर का उपयोग PHP की तुलना में कई बार होना चाहिए (उदाहरण के लिए यह लगातार कनेक्शन का उपयोग कर सकता है)। –
हम्म, काफी सही। एक तैयार ईमेल आसानी से एमएमएल प्रारूप में डिस्क पर सहेजा जा सकता है, और तब से एक स्क्रिप्ट पर ले जाएगा। यह एक वैकल्पिक कतार के रूप में भी निर्णायक रूप से सेवा कर सकता है। क्या आपके पास कुशल तरीके से ऐसा करने के कोई उदाहरण हैं? मुझे कुछ देखना अच्छा लगेगा। – Swader