У меня есть очень сложная система, которая открывала и закрывала соединения MySQLi каждый раз, когда она хотела выполнить запрос — из которых она выполняла около 40000 операций на каждую заданную операцию (я знаю, что она неэффективна). Я решил передать mysqli-соединение между функциями, чтобы предотвратить эту неэффективность многократного открытия и закрытия.
Моя проблема заключается в следующем: когда запрос не удается, я хотел бы отправить себе по электронной почте debug_backtrace()
, отформатированный в удобном для чтения формате (поэтому я print_r()
). По какой-то причине я теперь получаю предупреждение PHP, которое говорит print_r(): Property access is not allowed yet in... on line XXX
где строка XXX просто читает addNotification("Backtrace: ".print_r(debug_backtrace(), true), "debug");
Есть ли какая-то причина, по которой print_r()
не любит debug_backtrace()
когда один из переданных параметров в backtrace является mysqli_connect
объект? В mysqli_connect отсутствует функция toString?
РЕДАКТИРОВАТЬ После небольшого исследования я обнаружил, что вы можете позвонить print_r
или же var_dump
на mysqli_connect
объект, но если этот объект mysqli_close
d это вызывает это предупреждение. Если он закрыт и unset
это нормально.
Смотрите пример здесь.
http://php.net/manual/en/function.debug-backtrace.php
он использует var_dump вместо print_r
мой личный фаворит — var_export, потому что он создает читаемый формат php.
Других решений пока нет …