Если это только «избежать отладок в работе», используйте встроенную функцию assert ().
Это позволяет вообще не обрабатывать ваши сообщения отладки и предотвращает использование памяти любыми вычислениями, которые у вас там есть.или вычислительная мощность.
assert полностью игнорируется при производстве.
function debug(...$stuff){
var_dump($stuff);
return true; //always return true so assert will always pass it.
}
assert(debug("This code will not even be processed on production server. "));
Это самый безопасный способ, но не очень гибкий.
Один из методов, который я часто использовал, этопроверить имя хоста или IP-адрес клиента.
Итак, у меня есть функция для проверки имени хоста следующим образом:
function onTestServer(){
$SERVER_NAME = $_SERVER["SERVER_NAME"];
if(substr($SERVER_NAME,-5)==="te.st") return true;//all *.te.st domains are test servers
if (strpos($SERVER_NAME, ".localhost")!==false) return true; //all *.localhost domains are test servers
return false;
}
А затем у меня есть свой собственный vardump, debug и dieоператоры, которые не будут выполняться в рабочей среде, аналогичны следующим:
<code>function varDump($stuff){
if (!onTestServer()) return;
echo "<pre>";
var_dump($stuff);
echo "
";}
Тогда вы просто когда-либо будете использовать только пользовательскую функцию varDump (), чтобы ее могли видеть только вы.
Мои функции отладки намного сложнее и показывают расширяемые деревья информации и т. Д. Но основной принцип тот же: если на локальном хосте делать vardumps и т. Д., В противном случае ничего не отображается.
Очень удобно, если вы всегда хотите видеть дополнительную информацию при тестировании, но не хотите удалять все vardumps перед развертыванием на сервере.
Я также делаю такие вещи, как проверка IP-адреса клиента и отображение ошибоки информация о реальном производственном сервере, а также, если IP-адрес клиента мой.
function getIp()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function onTestClient(){
$office_ip = "xxxx.xxxx.xxxx.xxxx";
$test_client_ips = array($office_ip,"any other ip you want");
$client_ip = getIp();
if (in_array($client_ip,$test_client_ips)) return true;
return false;
}
Может быть очень удобно, если вам нужно протестировать некоторые быстрые обновления на живом сайте с удобного компьютера без локального тестированиясреда для использования.Можно просто добавить свой текущий IP-адрес в список и использовать функции, подобные этой:
function die_dev($message){
if (onTestServer() || onTestClient()) die($message);
}
Или даже:
if (onTestClient()){
//show a completely different interface/webpage html js etc
} else {
//show the original content that is currently live
}