2016-12-05 12 views
0

Я думал, что у меня была ошибка в моем коде, но, изолировав проблему, я обнаружил какое-то странное поведение error_log() внутри корпуса коммутатора.PHP error_log все еще работает внутри коммутатора с перерывом

Я добавил некоторый error_log для отладки, но затем, когда я работал в этом коммутаторе, ошибка всегда включалась, даже если вызов был сделан за пределами допустимого случая.

Вот точная часть моего кода, который заставил меня найти эту wierdness:

switch($LLTP->request()){ 

    case 'json': 
    /* some code commented out for debug here */ 
    error_log('json'); 
    echo 'json'; 
    break; 

    default: 
    /* some code commented out for debug here */ 
    error_log('html'); 
    echo 'html'; 
    break; 
} 

метод запроса является простым и простым и возвращает строку, как 'json','html','ajax' и т.д ..

public function request(){ 
    return $this->requests; 
    } 

так если переключатель html, по умолчанию удаляются, и я получаю приведенные результаты:

echoing 'html' (ожидается)

ErrorLog «HTML» (ожидается)

НО когда я запустить его с ключом «JSon», я получить ожидаемый «JSON» на экране, так и внутри error_log, но я также получаю «HTML 'запись ошибки (без эха).

вторя 'JSON' (ожидаемый)

ErrorLog 'JSON' (ожидаемый)

ErrorLog 'HTML, реферер: https://www.example.com/home.json' (неожиданный)

Является ли это нормальное поведение? Fisrt время я замечаю, и если я пытаюсь воспроизвести 'странность' с другим примером кодом:

$vv='json'; 
switch($vv){ 
    case 'json': 
    echo 'json'; 
    error_log('json'); 
    break; 
    default: 
    echo 'html'; 
    error_log('html'); 
    break; 
} 

я получаю (в ERRORLOG)

[ошибка] JSON (ожидается)

[ошибка] JSON, реферер: http://www.example.com/home.json (unexpeted, как это вторая запись в журнале)

я потерял, что-то я не у ожидаемые результаты - это не то, что я ожидал.

PS: i не выводит ошибки на странице, а только регистрирует ошибки в журналах. если это имело к этому какое-либо отношение o.O

+0

Было бы неплохо узнать, почему люди голосуют. Если да, объясните. –

+0

Невозможно воспроизвести его. Временные метки одинаковы в журнале ошибок? – rNix

+0

да, за исключением того, что иногда они разделяются на 1 секунду. Что меня удивляет, я получаю совершенно другое поведение, чем обычно, по этому конкретному сценарию. Я даже изолированный включает, методы и функции для отладки. Должно быть, что-то, что я закодировал перед рукой. я просто ошеломлен, так как все остальное работает так, как ожидалось. Если я даже узнаю, что я сделаю свой вывод здесь –

ответ

0

Сегодня я выяснил причину этого.

Когда я тестировал, я обманывал запрос json в своем браузере. Но каждый раз, когда я бы ударил обновление, мой браузер также отправил запрос на файл favicon.ico. Поскольку я не добавлял правила mod_rewrite для изображений, он обрабатывался как обычный html-запрос кодом, поэтому вызывал html-часть коммутатора.