Пользователь получает усеченное сообщение (максимум 19109 символов) из скрипта PHP при вызове mysqli_real_connect - PullRequest
3 голосов
/ 06 июня 2011

У меня проблема с одним из наших PHP-скриптов, иногда он возвращает усеченное сообщение.

Поток:

  1. Пользовательский вызов search.php
  2. Сценарий обработки запроса:

    • a Подключение к БД
    • b Сборка XML с использованием класса SimpleXML
    • c typeCast SimpleXML в строку.
    • d распечатать эту строку для клиента.
  3. Пользователь получает (выводит в браузер) только часть сообщения в некоторых случаях

после изучения этой проблемы я нашел следующие факты:

  1. Максимальная длина - 19109 символов -> более того, она усекается.
  2. Я зарегистрировал строку XML 2.C typeCast и обнаружил, что журнал содержит полный XML (не урезанный!).
  3. другие скрипты, которые возвращают более короткий / длинный ответ, работают нормально.
  4. Проблема как-то связана с подключением к БД:

    • Чтобы проверить, связана ли проблема с SimpleXML или чем-то с XML-строкой, я напечатал (вывод в браузер) diffrent-hardcoded-XML на # 2 .d -> оно также было усечено.

    • Затем я попытался найти причину (пока diffrent-hardcoded-XML все еще там), поэтому я отладил скрипт, используя «die;». Затем Iv'e обнаружил, что только при вызове mysqli_real_connect или mysql_real_connect возвращаемое значение усекается.

Есть идеи, как решить / отладить эту проблему?

1 Ответ

0 голосов
/ 16 августа 2011

Может быть сообщение № 2 дать вам ответ?Вкратце, руководство PHP отказывает в том, что такая функция в PHP едва существует.

В этом случае вы можете увидеть усеченный вывод, потому что у вас включен неявный сброс, поэтому ответнемедленно сбрасывается в браузер во время выполнения скрипта.Затем в какой-то момент скрипт вызывает mysql_real_connect, чего не существует.Это приводит к тому, что скрипт останавливает выполнение, поэтому вы видите частично сформированный вывод.Если вы отключили display_errors - вы не увидите сообщение об ошибке.

Итак, попробуйте включить вывод ошибок в вашей установке PHP (директива diplay_errors config).Другим хорошим способом решения этой проблемы является проверка, действительно ли существует mysql_real_connect с function_exists

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...