2010-01-02 9 views
74

मेरे पास एक सामान्य स्क्रिप्ट है जो Im में मेरी PHPcron फ़ाइलों और ब्राउज़र के माध्यम से उपयोग की जाने वाली फ़ाइलें शामिल हैं। कोड के कुछ भाग, मुझे केवल गैर क्रॉन फ़ाइलों के लिए चाहिए। मैं कैसे पता लगा सकता हूं कि निष्पादन सीएलआई या ब्राउज़र के माध्यम से है (मुझे पता है कि यह क्रॉन फाइलों के साथ कुछ तर्क पारित करके किया जा सकता है लेकिन मुझे क्रोंटैब तक पहुंच नहीं है)। क्या कोई और तरीका है ?PHP में, निष्पादन का पता लगाने के लिए कैसे सीएलआई मोड या ब्राउज़र के माध्यम से है?

उत्तर

136

उपयोग php_sapi_name() कार्य करते हैं।

if (php_sapi_name() == "cli") { 
    // In cli-mode 
} else { 
    // Not in cli-mode 
} 

यहाँ डॉक्स से कुछ प्रासंगिक नोट नहीं हैं:

php_sapi_name - वेब सर्वर और PHP

के बीच इंटरफेस के प्रकार

हालांकि संपूर्ण नहीं देता है, संभावित वापसी मान aolserver शामिल , अपाचे, apache2filter, apache2handler, caudium, cgi (PHP 5.3 तक), cgi-fcgi, cli, cli-server, निरंतरता, एम्बेड, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux, और webjames ।

+2

+1 इसे करने का एकमात्र सही तरीका है। –

+4

PHP_SAPI का भी इसके लिए उपयोग किया जा सकता है, इसलिए यह वास्तव में ऐसा करने का एकमात्र सही तरीका नहीं है – mishu

+11

यह केवल एक लिंक होता था जब तक किसी ने @Linus Unnebäck के उत्तर की प्रतिलिपि नहीं बनाई। बूरी आदत! इसे डाउनवोट करें, दूसरे को ऊपर उठाएं ... –

3

मुझे लगता है कि आप इसे $ _SERVER चर से देख सकते हैं। ब्राउज़र & सीएलआई दोनों के लिए $ _SERVER सरणी मुद्रित करने का प्रयास करें और आपको अंतर देखना चाहिए।

+1

यह सच हो सकता है, लेकिन इंटरफ़ेस का निर्धारण करने का एक विश्वसनीय तरीका इस्तेमाल किया जा रहा नहीं हो सकता। जांच करने का सही तरीका 'php_sapi_name()' है। – DesignerGuy

13

एक स्थिर PHP_SAPI है php_sapi_name() के समान मूल्य है।

+0

यह सबसे अच्छा तरीका है! – Ankit

-4

(पीएचपी> = 4.2.0 में उपलब्ध है) आप उपयोग कर सकते हैं:

if (isset($argc)) 
{ 
    // CLI 
} 
else 
{ 
    // NOT CLI 
} 
+3

-1 - '$ argc' एप्लिकेशन के भीतर सेट किया जा सकता था, है ना? एक विश्वसनीय विधि नहीं है। एक बार मुझे आधा दिन का काम खर्च करें। 'php_sapi_name()' मुझे पता है कि एकमात्र अच्छा तरीका है। –

+0

भी $ argv/$ argc कुछ कॉन्फ़िगरेशन पर GET चर के साथ भरा जा सकता है! –

61
if(php_sapi_name() == "cli") { 
    //In cli-mode 
} else { 
    //Not in cli-mode 
} 
संबंधित मुद्दे