PHP PCNTL - возможно ли достоверное ведение журнала ошибок? - PullRequest
0 голосов
/ 12 июля 2011

Мое текущее приложение выполняет вызов ajax на страницу PHP, которая отправляет запрос API на страницу JSP на нашей платформе Oracle.В настоящее время PHP-скрипт просто доверяет верным данным, которые были возвращены из JSP, и отправляет обратно {true} json-ответ обработчику успеха ajax.Ajax настроен так, чтобы изящно завершать работу прямо сейчас, поэтому он будет работать независимо, но он нам не поможет.

Моя задача состоит в том, чтобы, как только файл jsp был настроен для выдачи исключений, я получу PHP-обработку соответственно, зарегистрируйте ошибку и верните ответ json {false}.

Мы обеспокоены тем, что регистрация может занять слишком много времени, если она будет слишком полной.Этот процесс (без регистрации или проверки ошибок) в настоящее время очень быстрый, и скорость является критическим фактором.Моя идея обойти это потенциальное узкое место - сказать PHP «зарегистрировать ошибку, но не ждать подтверждения, что что-либо было зарегистрировано, просто вернуть false».

Я знаю, что разветвление возможно с PCNTL, но я не решаюсь форкать весь процесс, потому что я вижу, что это очень требовательно к памяти, если мы разветвляемся.

Возможно ли сделатьна что я надеюсь, и как бы я достиг этого, даже если бы не PCNTL?

1 Ответ

1 голос
/ 12 июля 2011

PCNTL был бы плохой идеей, как вы уже догадались.

Вы сравнивали, какова будет производительность журналирования?Возможно, вы пытаетесь преждевременной оптимизации.Понятно, что, поскольку это AJAX, вы хотите сделать его максимально отзывчивым, но если при ведении журнала будет задержка в 0,01 секунды, возможно, это того стоит.* / fwrite() / fclose() и syslog(), если использование системного журнала является опцией.

Очень сложно сделать что-либо асинхронно с PHP.Предполагая, что вход в процесс PHP слишком дорог, я бы написал небольшой регистратор на Java или что-то в этом роде и отправил бы ему сообщения журнала через HTTP POST (например).С такой библиотекой, как Log4J или Logback, половина работы уже сделана для вас, вам просто нужно обрабатывать входящие сообщения и регистрировать их в рабочем потоке.Потому что я не думаю, что у вас уже достаточно Rube Goldbergish ...:)

...