2010-01-02 8 views
74

PHPcron dosyalarımı ve tarayıcı üzerinden erişmekte olan dosyaları dahil ettiğim genel bir betik var. Kodun bir kısmı, sadece non-cron dosyaları için ihtiyacım var. Yürütmenin CLI'den mi yoksa tarayıcıya mı bağlı olduğunu nasıl anlayabilirim (bazı argümanları cron dosyalarıyla geçirerek yapılabildiğini biliyorum ama crontab'a erişimim yok). Başka yolu var mı?PHP'de, yürütmeyi nasıl algılamak CLI modundan mı yoksa tarayıcıdan mı?

cevap

136

kullanın php_sapi_name() fonksiyonu. İşte

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

dokümanlardan ilgili bazı notlar:

php_sapi_name - HTTP sunucusu ile PHP

arasındaki arayüzün türünü

ayrıntılı olmasa da döndürür olası dönüş değerleri aolserver dahil apache, apache2filter, apache2handler, caudium, cgi (PHP 5.3'e kadar), cgi-fcgi, cli, cli-server, süreklilik, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux ve webjames .

+2

+1 Bunu yapmanın tek doğru yolu. –

+4

PHP_SAPI bunun için de kullanılabilir, bu yüzden bu gerçekten – mishu

+11

yapmanın tek doğru yolu değildir. Bu, bir kullanıcı sadece @Linus Unnebäck'un cevabını kopyalayana kadar bir bağlantı olarak kullanılır. Kötü habbit! Bunu reddedin, diğerini yenileyelim ... –

3

Bunu sanırım $ _SERVER değişkenlerinden görebilirsiniz. Her iki tarayıcı da & CLI için $ _SERVER dizisini yazdırmaya çalışın ve farklılıklar görmelisiniz.

+1

Bu doğru olabilir ancak kullanılan arabirim belirlenmesi, güvenilir bir şekilde olmayabilir. Kontrol etmenin doğru yolu php_sapi_name() 'ile. – DesignerGuy

13

PHP_SAPI sabit değeri php_sapi_name() ile aynı değere sahiptir.

+0

Bu en iyi yol! – Ankit

-4

(PHP> = 4.2.0 mevcuttur)

Sen kullanabilirsiniz:

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

-1 - '$ argc' uygulama içinde ayarlanmış olabilir, değil mi? Güvenilir bir yöntem değil. Yarım günlüğüne bir kez çalışmamı sağla. php_sapi_name() 'bildiğim tek iyi yoldur. –

+0

Ayrıca bazı yapılandırmalarda $ argv/$ argc GET değişkenleri ile doldurulabilir! –

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