दिलचस्प पोस्ट
केस संवेदी नजरअंदाज करते समय वर्णानुक्रम को कैसे सॉर्ट करना है? एक बार में लाइन या संपूर्ण टेक्स्ट फ़ाइल द्वारा लाइन कैसे पढ़ें? एसक्यूएल फ़िल्ड आउटपुट त्रुटि एंड्रॉइड में यूआई थ्रेड पर चलने की जांच कैसे करें? जावा में एसक्यूएल स्क्रिप्ट फ़ाइल को कैसे निष्पादित करें? कई पैटर्न के साथ एक चरित्र वेक्टर का उपयोग grep सी ++ वेक्टर के तत्वों का योग कैसे करें? * .h या * .hpp अपनी कक्षा परिभाषाओं के लिए संकलन "के साथ स्थानांतरण R_X86_64_32` .rodata.str1.8 'के साथ विफल हो सकता है जब साझा ऑब्जेक्ट बनाने में नहीं किया जा सकता " नियंत्रण के नियमित प्रवाह के रूप में अपवाद का उपयोग क्यों नहीं करें? जीगप्लोट 2 में सीमांत हिस्टोग्राम के साथ स्कैटरप्लॉट इकाई फ़्रेमवर्क – गुणों के कई स्तर शामिल करें + ऑपरेटर कम प्रदर्शनकर्ता StringBuffer.append () से कम है जिन मामलों में सीडीएन अवरुद्ध / अनुपलब्ध हैं वहां स्थानीय स्क्रिप्ट फाइलों को फॉलबैक के रूप में कैसे लोड करें? ShellExecute .net में समकक्ष

कैसे PHP कोड अतुल्यकालिक चलाने के लिए

बिना प्रतीक्षा किए PHP कोड कैसे चला सकते हैं? मेरे पास एक लंबी दौड़ (लगभग अनंत) है, जिसे सर्वर शुरू होने के दौरान चलना चाहिए और बिना प्रतीक्षा किए बिना अतुल्यकालिक प्रक्रिया करनी चाहिए।

मुझे लगता है कि संभव विकल्प हैं:

  1. किसी वेब पेज में कोड चलाने और उस कार्य को करने के लिए इसे खोलें
  2. कुछ कमांड लाइन उपयोगिता से स्क्रिप्ट को कॉल करना (मुझे यकीन नहीं है कि) कैसे पृष्ठभूमि में प्रक्रिया करेगा

मैं अपने स्थानीय सर्वर पर PHP स्क्रिप्ट चला रहा हूं जो कुछ ईवेंट होने पर ईमेल भेजेगा, जैसे जन्मदिन अनुस्मारक

कृपया सुझाव दें कि ब्राउज़र में पृष्ठ को खोलने के बिना मैं यह कैसे प्राप्त कर सकता हूं।

वेब के समाधान से एकत्रित समाधान "कैसे PHP कोड अतुल्यकालिक चलाने के लिए"

यदि आप ब्राउज़र से इसे चलाने के लिए चाहते हैं (शायद आप कमांड लाइन से परिचित नहीं हैं) तो आप अभी भी ऐसा कर सकते हैं। मैंने कुछ महीने पहले इसके लिए कई समाधानों की खोज की थी और सबसे विश्वसनीय और सरल रूप से कार्यान्वयन किया गया था कि कैसे PHP में एक अतुल्यकालिक HTTP अनुरोध पोस्ट किया गया

<?php $params['my_param'] = $a_value; post_async('http:://localhost/batch/myjob.php', $params); /* * Executes a PHP page asynchronously so the current page does not have to wait for it to finish running. * */ function post_async($url, array $params) { foreach ($params as $key => &$val) { if (is_array($val)) $val = implode(',', $val); $post_params[] = $key.'='.urlencode($val); } $post_string = implode('&', $post_params); $parts=parse_url($url); $fp = fsockopen($parts['host'], isset($parts['port'])?$parts['port']:80, $errno, $errstr, 30); $out = "POST ".$parts['path']." HTTP/1.1\r\n"; $out.= "Host: ".$parts['host']."\r\n"; $out.= "Content-Type: application/x-www-form-urlencoded\r\n"; $out.= "Content-Length: ".strlen($post_string)."\r\n"; $out.= "Connection: Close\r\n\r\n"; if (isset($post_string)) $out.= $post_string; fwrite($fp, $out); fclose($fp); } 

मान लें कि उपर्युक्त फाइल आपकी वेब रूट निर्देशिका ( /var/www ) में है उदाहरण के लिए और इसे runjobs.php कहा जाता है http://localhost/runjobs.php जाकर अपनी myjob.php फ़ाइल myjob.php शुरू हो जाएगी। संभवतः आप ब्राउज़र में कुछ आउटपुट जोड़ना चाहते हैं ताकि आपको यह ज्ञात हो कि इसे सफलतापूर्वक सबमिट किया गया है और यदि आपकी वेब सर्वर दुनिया के बाकी हिस्सों के लिए खुले है, तो कुछ सुरक्षा जोड़ने में यह चोट नहीं लगेगा इस समाधान के बारे में एक अच्छी बात यह है कि यदि आप कुछ सुरक्षा जोड़ते हैं तो आप नौकरी शुरू कर सकते हैं कहीं भी आप एक ब्राउज़र खोज सकते हैं।

निश्चित रूप से एक क्रॉन कार्य के लिए एक नौकरी की तरह लग रहा है आप एक बार अपना काम करने के लिए एक php स्क्रिप्ट सेट कर सकते हैं और जितनी बार चाहें क्रोन चला सकते हैं। क्रोन कार्य के रूप में चलाने के लिए एक PHP स्क्रिप्ट चलाने पर अच्छा लेखन है; यह करना बहुत आसान है

यह सच नहीं है कि PHP को किस प्रकार डिज़ाइन किया गया है। आपको अतुल्यकालिक चलाने वाले थ्रेड्स को स्पिन करने के लिए पीईसीएल थ्रेडिंग लाइब्रेरी का उपयोग करना होगा, और मैं इसकी सिफारिश नहीं करता। Async विभाग में नई हॉटनेस नोड.जेएस है – मैं आपको इसकी जांच करता हूं और देखें कि क्या आप इसे उपयोग कर सकते हैं। यह हल्के वजन, एसिंक्रोनस नेटवर्क ऑपरेशन के लिए डिज़ाइन किया गया है, और इसका प्रयोग PHP स्क्रिप्ट को आग लगाने के लिए किया जा सकता है।

मैं PHP कोड को बिना प्रतीक्षा किए बिना कैसे चला सकता हूँ मेरे पास लंबे समय तक चलने (लगभग अनन्त) है, जो कि सर्वर शुरू होने के दौरान चलना चाहिए और बिना प्रतीक्षा किए बिना असीमित रूप से प्रोसेस करना चाहिए।

एक ठेठ LAMP सिस्टम मानते हुए, आप कमांड लाइन से एक PHP डेमॉन शुरू कर सकते हैं

 root# php yourscript.php & 

जहां आपके crypt.php में कुछ समान है

 <?php $log = fopen('/var/log/yourscript.log', 'a+'); // ### check if we are running already omitted while(true) { // do interesting stuff and log it. // don't be a CPU hog sleep(1); } ?> 

अभिलिखित: अपनी स्क्रिप्ट को सीधे एक्जीक्यूटेबल बनाने के लिए: chmod + x yourcript.php और #! / Usr / bin / php को तुम्हारी लिपि की शुरुआत में जोड़ें

अपाचे के साथ शुरू करने के लिए, आपको उस आदेश को अपने अपाचे स्टार्टअप स्क्रिप्ट (आमतौर पर apachectl) में जोड़ना चाहिए और इसे अप्प बंद होने पर कोड को जोड़ने के लिए सुनिश्चित करना चाहिए

जांच कि अगर आप पहले ही चल रहे हैं तो / var / locks में आपके पीआईडी ​​के साथ एक फाइल और कुछ सिस्टम ('/ bin / ps'। The $ pid) शामिल है; यह हत्या निर्देश को लिखना आसान बनाता है।

धन्यवाद टोड चफफी लेकिन यह मेरे लिए काम नहीं कर रहा है इसलिए मैंने आपका कोड संपादित किया है I आशा है कि आप दिमाग नहीं करेंगे और हो सकता है कि यह इस तकनीक के साथ दूसरों की मदद करे

कॉर्नआज़पेज। php // मुख्यपेज

  <?php //if you want to call page for multiples time wrt array //then uncomment loop start & end) ?> <?php //foreach ($inputkeywordsArr as $singleKeyword) { $url="http://localhost/projectname/testpage.php"; $params['Keywordname'] = "testValue";//$singleKeyword post_async($url, $params); //}//foreach ($inputkeywordsArr end ?> <?php /* * Executes a PHP page asynchronously so the current page does not have to wait for it to finish running. * */ function post_async($url, array $params) { foreach ($params as $key => &$val) { if (is_array($val)) $val = implode(',', $val); $post_params[] = $key.'='.urlencode($val); } $post_string = implode('&', $post_params); $parts=parse_url($url); $fp = fsockopen($parts['host'], isset($parts['port'])?$parts['port']:80, $errno, $errstr, 30); $out = "GET ".$parts['path']."?$post_string"." HTTP/1.1\r\n";//you can use POST instead of GET if you like $out.= "Host: ".$parts['host']."\r\n"; $out.= "Content-Type: application/x-www-form-urlencoded\r\n"; $out.= "Content-Length: ".strlen($post_string)."\r\n"; $out.= "Connection: Close\r\n\r\n"; fwrite($fp, $out); fclose($fp); } ?> 

testpage.php

  <? echo $_REQUEST["Keywordname"];//Output > testValue ?>