दिलचस्प पोस्ट
समूह द्वारा महीने और वर्ष में MySQL रेजेक्स मैचों की सरणी बनाएँ मैं क्यों एक चर के बाहर का उल्लेख कर सकते हैं अगर / जब तक / कभी नहीं भाग गया कि बयान? AppDomain में स्थिर फ़ील्ड संदर्भ से मैं एक आदिम डेटा प्रकार कैसे प्राप्त करूं? MySQL को पुनरारंभ किए बिना कैसे MySQL की धीमी क्वेरी लॉग को सक्षम कर सकता हूं? आप एक गिट टैग का नाम कैसे बदल सकते हैं? चयन ऑब्जेक्ट के बाद पॉज़ या स्लीप करने में असमर्थ Google क्रोम / फ़ायरफ़ॉक्स कंसोल में एक्सटेंशन आउटपुट नहीं दिखता है Mac पर आर स्थापित करना – चेतावनी संदेश: LC_CTYPE सेट करना विफल, "सी" का उपयोग करना अलग थ्रेड के बीच सी # में एओपी का उपयोग कैसे करें? नोडजे अनुरोध डिफ़ॉल्ट समयबाह्य समय को कैसे संशोधित करें? क्या हम एक जावा डेस्कटॉप अनुप्रयोग में किसी भी GUI अद्यतन के लिए EventQueue.invokeLater का उपयोग करना चाहिए? एसक्यूएल ओरडिनल स्थिति नोटेशन का उपयोग करने के लाभ? कैसे सी # घटनाओं पर्दे के पीछे काम करते हैं?

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

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

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

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

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

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

Solutions Collecting From Web of "कैसे 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 ?>