Tiêu đề rất đơn giản. Tôi phải biết về phía máy chủ nếu kịch bản được gọi thông qua yêu cầu HTTP hoặc bằng dòng lệnh. Tôi có thể kiểm tra $_SERVER['argv']
hoặc $_SERVER['argc']
.
thực dụng cách nào để thực hiện điều đó?Cách phân biệt giữa yêu cầu http và cli?
Trả lời
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
Nhìn vào các phím trong $_SERVER. Nếu nó là một yêu cầu cli, bạn sẽ không thấy bất kỳ bắt đầu với "HTTP".
Dưới đây là một số mã kiểm tra đơn giản:
<?php
foreach($_SERVER as $k=>$v){
echo "$k: $v\n";
}
?>
Và đây là kết quả:
[email protected]:~/so$ php cli.php |grep HTTP
[email protected]:~/so$
Không cần cho một vòng lặp khi bạn chỉ có thể kiểm tra một giá trị duy nhất. –
@kemp, câu hỏi của OP được yêu cầu cụ thể cho các lựa chọn thay thế cho argc –
Có thể kiểm tra nếu không có $_SERVER['HTTP_HOST']
được thiết lập? Bởi vì tôi tin rằng biến đó được điền thông qua các tiêu đề yêu cầu được gửi đến một tệp trên exection và dòng lệnh có thể không gửi tiêu đề.
Ha, trong vòng 1 giây của mỗi khác ... –
Bạn có thể kiểm tra xem biến toàn cầu $argc
được đặt hay chưa.
Tôi đề nghị kiểm tra if(isset($_SERVER['SERVER_NAME']))
Tôi không chắc chắn rằng điều này không được thiết lập. Nó có thể, đặc biệt nếu bạn đang thực thi tập tin PHP của bạn từ xa .. –
Tôi nghĩ mảng $ _SERVER được dành riêng cho các giao dịch HTTP, nhưng bạn có thể đúng. Nó vẫn còn giá trị đi qua các thành viên khác nhau trong nó như tôi chắc chắn rằng họ khác nhau giữa thực hiện địa phương và từ xa. –
Nhưng bạn phải gửi dữ liệu thông qua http (tcp) anyway cho dù kịch bản được gọi là từ cli hoặc từ một trình duyệt
Bạn chỉ là sai. – erenon
- 1. Sự khác biệt giữa tùy chọn keep_alive và persistent cho yêu cầu HTTP là gì?
- 2. Sự khác biệt giữa đá quý và yêu cầu (yêu cầu mở-uri)
- 3. cách phân tích cú pháp yêu cầu http trong C++
- 4. Cách phân phối các yêu cầu HTTP qua thiên thạch
- 5. Cách viết Yêu cầu HTTP
- 6. Sự khác biệt giữa yêu cầu AJAX và yêu cầu trình duyệt thông thường
- 7. Làm thế nào để phân biệt các yêu cầu Ajax từ các yêu cầu Http bình thường?
- 8. Yêu cầu DELETE HTTP
- 9. Tải trọng yêu cầu HTTP
- 10. RestKit: phân biệt nhiều yêu cầu trong didLoadResponse:
- 11. Cách gửi yêu cầu HTTP POST và nhận phản hồi?
- 12. Cách biết Yêu cầu HTTP là BOT
- 13. sự khác biệt giữa http và www
- 14. URL yêu cầu HTTP có phải là một phần của tiêu đề yêu cầu HTTP không?
- 15. Sự khác biệt giữa http: // *: 80 và http: // +: 80
- 16. Yêu cầu HTTP trong Ubuntu
- 17. Phương pháp thử yêu cầu http yêu cầu
- 18. Symfony2: gửi yêu cầu HTTP
- 19. Yêu cầu HTTP SOAP PHP
- 20. Http Yêu cầu Vòng đời
- 21. Nghe các yêu cầu HTTP
- 22. JAVA: http yêu cầu đăng
- 23. yêu cầu http với powershell
- 24. Volley: http yêu cầu chậm
- 25. Thay đổi HTTP bài yêu cầu HTTPS bài yêu cầu:
- 26. Gửi http xóa yêu cầu
- 27. Lập và nhận một yêu cầu HTTP trong C#
- 28. Thời gian yêu cầu HTTP Express.js
- 29. C# lưu tệp từ Yêu cầu HTTP
- 30. Sự khác biệt giữa net/http và net/http/fcgi ở Golang
Thực hiện tốt, cảm ơn. – erenon
+1 Đây là con đường để đi. Tôi đã gặp vấn đề với việc kiểm tra các biến $ _SERVER và những thứ tương tự. Cái này luôn hoạt động. –
+1 không biết về chức năng này, cảm ơn! –