PHP7 como obter dados (quase) em tempo real de uma variedade de fontes de dados?

1

Estou fazendo um site (PHP7 no Win2012r2 com Apache 2.4 / JS) para ajudar um helpdesk. As informações pesquisadas são principalmente informações sobre computadores, usuários e o Active Directory. Alguns outros recursos, como o MSSQL e alguns aplicativos legados executados a partir da linha CMD, também fornecem informações. As informações também devem ser solicitadas a partir de dispositivos móveis para engenheiros de suporte de campo.

Em 80% de todos os casos, o helpdesk pode usar dados que são recentes, mas não em tempo real. Eu configurei um monte de scripts PHP e scripts PS para reunir os dados relevantes, colocar isso em um banco de dados MySQL e deixar o helpdesk-website consultar essa informação (seja estática ou com AJAX).

Em 20% dos casos, o helpdesk ou os engenheiros do FS precisam ver a vida dos dados de quase-vida para solucionar problemas quando o usuário estiver no telefone. Agora, meu dilema é como obter esses dados a uma velocidade aceitável (digamos, alguns segundos) - mas isso deve ser feito de maneira segura!

Até agora eu tentei / considerei:

1) Faça o webrequest fazer um gatilho MySql usando sys_exec () para acionar um script externo para obter os dados. Problema: sys_exec () não é um MySQL nativo e não é seguro, pois está disponível para todos os usuários MySql.

2) Faça com que o webrequest (PHP) acione um exec para iniciar um script obtendo os dados. Problema: você precisa fornecer o script PHP que aciona demais os direitos de execução, novamente (altamente) inseguros.

3) Várias maneiras em que o webrequest coloca uma linha em uma tabela de memória MySql (permite nomeá-la 'todo') e tem um script de uma posição com mais direitos e fora do ambiente do servidor web (mas no mesmo servidor) a tabela 'todo', execute o pedido e retorne o resultado em outra tabela. Embora essa configuração tenha pelo menos 5 barreiras para um hacker em potencial, tornando-a bastante segura, ela depende da pesquisa do solicitante como o script de backend em execução, tornando-o lento. Mesmo que seja lento, atualmente vejo isso como a melhor escolha.

4) use uma conexão de rede (localhost) entre o PHP solicitante e o script que reúne os dados. Problema: Isso pode funcionar apenas como fire-and-forget, já que o PHP solicitante só pode fazer o pedido UDP com direitos padrão. Para uma conexão TCP apropriada, o script PHP solicitante necessitaria de direitos root / Admin que não sejam seguros. Embora o trabalho de ignorar e esquecer funcione se o 'script de coleta' de retorno retornar seus dados para a tabela de memória temporária no mysql, seriam necessários extensos loops de verificação de status / erro e uma nova pesquisa.

5) use o PHP diretamente para obter, por exemplo Dados SNMP, WMI, MSSql e MySql. Embora o SNMP e o MySql sejam muito fáceis de implementar, MSSQL e chamadas espe- cialmente WMI são muito difíceis (pelo menos para mim) para funcionar corretamente no PHP7 em um servidor Windows2012R2.

Alguém tem uma idéia de como eu obteria os dados de uma variedade de fontes transferidas de volta para o script PHP solicitante, sem tornar essa configuração um grande risco à segurança? Ou talvez ainda melhor, uma boa correção para fazer com que o MSSQL e espe- cialmente o WMI funcione sob PHP7 a partir do windows2012r2?

    
por Freeze_H 03.11.2016 / 09:13

0 respostas