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
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 .
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.
Bu doğru olabilir ancak kullanılan arabirim belirlenmesi, güvenilir bir şekilde olmayabilir. Kontrol etmenin doğru yolu php_sapi_name() 'ile. – DesignerGuy
(PHP> = 4.2.0 mevcuttur)
Sen kullanabilirsiniz:if (isset($argc))
{
// CLI
}
else
{
// NOT CLI
}
-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. –
Ayrıca bazı yapılandırmalarda $ argv/$ argc GET değişkenleri ile doldurulabilir! –
if(php_sapi_name() == "cli") {
//In cli-mode
} else {
//Not in cli-mode
}
- 1. - akıllı mı yoksa aptal mı?
- 2. Jinja şablonu, çift tırnak mı yoksa tek tırnak mı yoksa çift tırnak mı, yoksa tek tırnak mı olarak yazıyorsunuz? "
- 3. datetime.datetime var mı yoksa Yok
- 4. Fotoğrafı Yatay mı yoksa Portre modunda mı tanıyorsunuz?
- 5. Metin seçildiğinde tarayıcıdan kaydırma nasıl durdurulur? Potansiyel tarayıcı hatası mı?
- 6. İnce senkronizasyon sınıfları, AppDomain başına mı, yoksa Proses başına mı?
- 7. Git: dallar değişiklikleri yalıtmalı mı, yoksa yapmamalı mı?
- 8. OtomatikMapper büyük/küçük harfe duyarlı mı yoksa duyarsız mı?
- 9. CLLocationManager güncellemelerini zorlama - yardımcı mı yoksa zarar mı veriyor?
- 10. Swift: ViewModel bir yapı mı yoksa sınıf mı olmalı?
- 11. Veritabanı sorgularımı oran sınırlaması mı yoksa azalt mı?
- 12. "ANR" bir istisna mı, yoksa bir hata mı?
- 13. CloudKit güçlü bir şekilde tutarlı mı, yoksa tutarlı mı?
- 14. JVM yığınında çerçeve ayrılmış mı, yoksa ayrılmış mı?
- 15. USB aşırı akımını algılamak için bir Windows API var mı?
- 16. Dizginin son eki mi yoksa uzantı mı?
- 17. Dizin var mı, yoksa linux değil mi?
- 18. Ember-cli ile karışımları mı kullanıyorsunuz?
- 19. Javadoc yorum. İhtiyacınız mı yoksa gereksiz mi?
- 20. Scala yorumlayıcısında güç modundan çıkmak için bir yol var mı?
- 21. Bir http git uzaklığının akıllı mı yoksa aptal mı olduğunu tespit etmek mümkün mü?
- 22. Nesnede var mı yoksa javascriptte mi var
- 23. SQL Server yerel mi yoksa uzak mı?
- 24. Managed C++ ile C++/CLI arasında dönüştürme araçları var mı?
- 25. Bir python komut dosyasının modül olarak alındığını mı yoksa komut dosyası olarak mı çalıştırıldığını nasıl belirleyebilirim?
- 26. Bir değişkenin bir sayı mı, yoksa bir sayı mı olduğunu nasıl kontrol edebilirim?
- 27. C#: Bir nesnenin özel bir sınıf mı yoksa yerel tür/.NET sınıfı mı olduğunu nasıl anlarsınız?
- 28. Sınıfın bir iç sınıf mı yoksa kullanıcı sınıfı mı olduğunu nasıl anlarsınız?
- 29. Geçerli mimarinin i386 mı yoksa x86_64'ün maclarda mı olduğunu nasıl öğrenebilirim? (Xcode)
- 30. Perl kodundaki bir grup parenin gruplandırma olarak mı yoksa liste oluşturması mı gerektiğini nasıl anlayabilirim?
+1 Bunu yapmanın tek doğru yolu. –
PHP_SAPI bunun için de kullanılabilir, bu yüzden bu gerçekten – mishu
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 ... –