मैं pcntl_fork उपयोग कर रहा हूँ एक बच्चे की प्रक्रिया शुरू करने SMTP के माध्यम से एक ईमेल भेजने के द्वारा शुरू कर दिया।पीएचपी - हत्या बच्चे प्रक्रिया pcntl_fork
बच्चे की प्रक्रिया ईमेल भेजने के लिए पीईआर मेल पैकेज का उपयोग करती है, लेकिन समस्या यह है कि रिमोट सर्वर प्रक्रिया का जवाब नहीं देता है, केवल प्रतिक्रिया के लिए प्रतीक्षा करता है, भले ही PHP में सेट की गई किसी भी समय सीमा के बावजूद। आरं।
इस के आसपास पाने के लिए मैं 30 सेकंड है कि बच्चे की प्रक्रिया को मारता है अगर यह अभी भी चल रहा है के बाद एक समारोह को गति प्रदान करने pcntl_alarm समारोह का उपयोग कर रहा हूँ।
function handlesig($sig) {
global $pid,$node,$resend;
posix_kill($pid,SIGKILL);
mysql_query("insert into log (event) values ('Timed out!')");
}
जब मैं बाल प्रक्रिया को मारता हूं हालांकि मुझे सिस्टम पर एक निष्क्रिय प्रक्रिया के साथ छोड़ दिया जाता है।
वहाँ एक अलग संकेत मुझे लगता है कि का उपयोग करना चाहिए अभी भी बच्चे को प्रक्रिया के लिए बाध्य करेगा कनेक्शन के लिए प्रतीक्षारत (क्योंकि कनेक्शन खत्म कभी नहीं होगा) के बिना मर जाते हैं और मृत प्रक्रियाओं का निर्माण हो से बचने के लिए है?
कारण मैं सख्त भेज रहा हूँ का उपयोग कर PHP के माध्यम से ctly है इसलिए मैं प्रतिक्रिया प्राप्त कर सकता हूं और सफलता/मुलायम उछाल/हार्ड बाउंस के लिए इसे उचित रूप से संभाल सकता हूं। सिगरम और सिगकिल एकमात्र सिग्नल हैं जिन्हें मैं जानता हूं, और सिगरेट काम नहीं करता था इसलिए मैंने सिगकिल का इस्तेमाल किया। मैं सिगस्टॉप/सिग्स्टस्ट की कोशिश करूंगा। – Tim
हम्म मैं व्यक्तिगत रूप से 2 अलग-अलग स्क्रिप्ट में ऐसा करूंगा।एक स्थानीय smtp सेवा के माध्यम से भेजने के लिए बाउंस को संभालने के लिए सिक्योर, एक प्रकार का स्वचालित पॉप/स्क्रिप्ट प्राप्त करें, जो बाउंस और सफलता के लिए संभालती है। इसका एक कारण यह है कि php स्क्रिप्ट जो smtp को मेल प्रदान करती है वह वेब-सर्वर बच्चों को अवरुद्ध नहीं कर रही है। उदाहरण के लिए यदि आपके पास अधिकतम 20 बच्चे हैं और प्रत्येक बच्चा किसी बाहरी स्रोत से कनेक्शन शुरू कर रहा है, तब तक कोई अन्य सेवा तब तक उपलब्ध नहीं है जब तक कोई बच्चा फिर से मुक्त न हो जाए। – user207675