Как убрать время и память из 500 внутренней ошибки - Zend - PullRequest
1 голос
/ 07 мая 2020

На самом деле внутренняя ошибка 500 - это комбинация «Время-Память-Функция-Местоположение».

Теперь я хотел бы удалить время и память из 500 Внутренней ошибки.

Фактический результат:

#TimeMemoryFunctionLocation
10.0002365832{main}(  ).../http.php:0
20.05691577072Zend\Mvc\Application->run(  ).../http.php:48
30.06211677272Zend\EventManager\EventManager->triggerEventUntil(  ).../Application.php:332
40.06211677272Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
50.06221677912Zend\Mvc\DispatchListener->onDispatch(  ).../EventManager.php:322
60.06261682144WebService\Controller\User\ManageAccountController->dispatch(  ).../DispatchListener.php:138
70.06261682144WebService\Controller\User\ManageAccountController->dispatch(  ).../AbstractRestfulController.php:313
80.06261682464Zend\EventManager\EventManager->triggerEventUntil(  ).../AbstractController.php:106
90.06261682464Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
100.06281686864WebService\Controller\User\ManageAccountController->onDispatch(  ).../EventManager.php:322
110.07321939200WebService\Controller\User\ManageAccountController->onDispatch(  ).../AbstractController.php:129
120.07321939232WebService\Controller\User\ManageAccountController->processPostData(  ).../AbstractRestfulController.php:429
130.07341945960WebService\Controller\User\ManageAccountController->create(  ).../AbstractController.php:234
140.08922331024Model\Model\UserModel->updateUser(  ).../ManageAccountController.php:50
150.08932331464Model\Mapper\UserMapper->updateUserData(  ).../UserModel.php:560
160.08932332744Application\Database\Connection->execute(  ).../UserMapper.php:475
170.08942332840Zend\Db\Adapter\Adapter->query(  ).../Connection.php:77
180.08942244472Zend\Db\Adapter\Driver\Mysqli\Statement->prepare(  ).../Adapter.php:193

Ожидаемый результат:

{main}(  ).../http.php:0
Zend\Mvc\Application->run(  ).../http.php:48
Zend\EventManager\EventManager->triggerEventUntil(  ).../Application.php:332
Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
Zend\Mvc\DispatchListener->onDispatch(  ).../EventManager.php:322
WebService\Controller\User\ManageAccountController->dispatch(  ).../DispatchListener.php:138
WebService\Controller\User\ManageAccountController->dispatch(  ).../AbstractRestfulController.php:313
Zend\EventManager\EventManager->triggerEventUntil(  ).../AbstractController.php:106
Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
WebService\Controller\User\ManageAccountController->onDispatch(  ).../EventManager.php:322
WebService\Controller\User\ManageAccountController->onDispatch(  ).../AbstractController.php:129
WebService\Controller\User\ManageAccountController->processPostData(  ).../AbstractRestfulController.php:429
WebService\Controller\User\ManageAccountController->create(  ).../AbstractController.php:234
Model\Model\UserModel->updateUser(  ).../ManageAccountController.php:50
Model\Mapper\UserMapper->updateUserData(  ).../UserModel.php:560
Application\Database\Connection->execute(  ).../UserMapper.php:475
Zend\Db\Adapter\Adapter->query(  ).../Connection.php:77
Zend\Db\Adapter\Driver\Mysqli\Statement->prepare(  ).../Adapter.php:193

Я пробовал это регулярное выражение. Но я не нашел решения

/[\d\.]*([a-zA-Z\.\/\\\->\(\) {}]*:\d*)/g 

Пожалуйста, помогите мне найти решение.

1 Ответ

1 голос
/ 08 мая 2020

Вы можете сопоставить 1 или несколько цифр, затем точку и снова 1 или несколько цифр и утверждать, что то, что справа, является либо шаблоном {...}, либо 1+ словесными символами, за которыми следует \, чтобы сделать его немного подробнее c.

^\d+\.\d+(?={[^{}]*}|\w+\\)

При замене используйте пустую строку.

Пояснение

  • ^ Начало строка
  • \d+\.\d+ Соответствие 1+ цифр, точка и 1+ цифр
  • (?= Положительный просмотр вперед, подтверждение того, что справа -
    • {[^{}]*} Соответствие { до } без соответствия { или } между
    • | или
    • \w+\\ Соответствие 1+ символов слова, за которым следует \
  • ) Закрыть просмотр вперед

Демонстрация Regex | Php демонстрация

Если вы также хотите удалить #TimeMemoryFunctionLocation, вы можете использовать привязку \G

(?:#TimeMemoryFunctionLocation\R|\G)\d+\.\d+((?:{[^{}]*}|\w+\\).*\R*)
  • (?: Группа без захвата
    • #TimeMemoryFunctionLocation\R Сопоставление # TimeMemoryFunctionLocation и последовательность новой строки Unicode
    • | Или
    • \G Утвердить позицию в конец предыдущего совпадения, которое в данном случае будет в начале строки
  • ) Закрытая группа
  • \d+\.\d+ Совпадение 1+ цифр, точка и 1+ цифр
  • ( захват группа 1
    • (?:{[^{}]*}|\w+\\)
    • .*\R* Соответствует остальной части строки и 0+ unicode newline последовательностей
  • ) Закрыть группу 1

Regex demo | Php демонстрация

В качестве замены используйте группу захвата 1

Например

$re = '/(?:#TimeMemoryFunctionLocation\R|\G)\d+\.\d+((?:{[^{}]*}|\w+\\\\).*\R*)/';
$str = "...";
$result = preg_replace($re, '$1', $str);

Например, используя первый шаблон :

$re = '/^\d+\.\d+(?={[^{}]*}|\w+\\\\)/m';
$str = '#TimeMemoryFunctionLocation
10.0002365832{main}(  ).../http.php:0
20.05691577072Zend\\Mvc\\Application->run(  ).../http.php:48
30.06211677272Zend\\EventManager\\EventManager->triggerEventUntil(  ).../Application.php:332
40.06211677272Zend\\EventManager\\EventManager->triggerListeners(  ).../EventManager.php:179
50.06221677912Zend\\Mvc\\DispatchListener->onDispatch(  ).../EventManager.php:322
60.06261682144WebService\\Controller\\User\\ManageAccountController->dispatch(  ).../DispatchListener.php:138
70.06261682144WebService\\Controller\\User\\ManageAccountController->dispatch(  ).../AbstractRestfulController.php:313
80.06261682464Zend\\EventManager\\EventManager->triggerEventUntil(  ).../AbstractController.php:106
90.06261682464Zend\\EventManager\\EventManager->triggerListeners(  ).../EventManager.php:179
100.06281686864WebService\\Controller\\User\\ManageAccountController->onDispatch(  ).../EventManager.php:322
110.07321939200WebService\\Controller\\User\\ManageAccountController->onDispatch(  ).../AbstractController.php:129
120.07321939232WebService\\Controller\\User\\ManageAccountController->processPostData(  ).../AbstractRestfulController.php:429
130.07341945960WebService\\Controller\\User\\ManageAccountController->create(  ).../AbstractController.php:234
140.08922331024Model\\Model\\UserModel->updateUser(  ).../ManageAccountController.php:50
150.08932331464Model\\Mapper\\UserMapper->updateUserData(  ).../UserModel.php:560
160.08932332744Application\\Database\\Connection->execute(  ).../UserMapper.php:475
170.08942332840Zend\\Db\\Adapter\\Adapter->query(  ).../Connection.php:77
180.08942244472Zend\\Db\\Adapter\\Driver\\Mysqli\\Statement->prepare(  ).../Adapter.php:193';

$result = preg_replace($re, '', $str);

echo $result;

Вывод

#TimeMemoryFunctionLocation
{main}(  ).../http.php:0
Zend\Mvc\Application->run(  ).../http.php:48
Zend\EventManager\EventManager->triggerEventUntil(  ).../Application.php:332
Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
Zend\Mvc\DispatchListener->onDispatch(  ).../EventManager.php:322
WebService\Controller\User\ManageAccountController->dispatch(  ).../DispatchListener.php:138
WebService\Controller\User\ManageAccountController->dispatch(  ).../AbstractRestfulController.php:313
Zend\EventManager\EventManager->triggerEventUntil(  ).../AbstractController.php:106
Zend\EventManager\EventManager->triggerListeners(  ).../EventManager.php:179
WebService\Controller\User\ManageAccountController->onDispatch(  ).../EventManager.php:322
WebService\Controller\User\ManageAccountController->onDispatch(  ).../AbstractController.php:129
WebService\Controller\User\ManageAccountController->processPostData(  ).../AbstractRestfulController.php:429
WebService\Controller\User\ManageAccountController->create(  ).../AbstractController.php:234
Model\Model\UserModel->updateUser(  ).../ManageAccountController.php:50
Model\Mapper\UserMapper->updateUserData(  ).../UserModel.php:560
Application\Database\Connection->execute(  ).../UserMapper.php:475
Zend\Db\Adapter\Adapter->query(  ).../Connection.php:77
Zend\Db\Adapter\Driver\Mysqli\Statement->prepare(  ).../Adapter.php:193
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...