|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/* * *****************************************************************************************
|
|
|
|
|
* Data: 15/05/2015.
|
|
|
|
|
* Autor: Amarildo Pereira
|
|
|
|
|
* Descri<EFBFBD><EFBFBD>o: Prove dados para sincroniza<EFBFBD><EFBFBD>o de informa<EFBFBD><EFBFBD>es para agente e supervisor.
|
|
|
|
|
* Objetivo: Diminuir a concorrencia ao banco de dados, devido a cada agente ou super-
|
|
|
|
|
* visor fazerem consultas constantes para manter suas interfaces atualizadas. O servi<EFBFBD>o
|
|
|
|
|
* devera acessar o banco de diponibilizar os dados em memoria para sincroniza<EFBFBD><EFBFBD>o das
|
|
|
|
|
* aplicac<EFBFBD>es clientes.
|
|
|
|
|
*
|
|
|
|
|
* Funcoes:
|
|
|
|
|
* -sGetConnection -> Retorna uma conex<EFBFBD>o para o banco de dados.
|
|
|
|
|
* -sGravaLog -> Grava log de erros gerados pelo servi<EFBFBD>o.
|
|
|
|
|
* -sCreateMemory -> Aloca memoria para sincroniza<EFBFBD><EFBFBD>o de dados.
|
|
|
|
|
* ***************************************************************************************** */
|
|
|
|
|
error_reporting(E_ERROR);
|
|
|
|
|
ini_set('display_errors', 0);
|
|
|
|
|
ini_set("memory_limit", "512M");
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inclui fun<EFBFBD>oes gen<EFBFBD>ricas.
|
|
|
|
|
*/
|
|
|
|
|
include("util/util.php");
|
|
|
|
|
include("util/sharedMem.php");
|
|
|
|
|
include("funcoes/ssupervisor_aux.php");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Conex<EFBFBD>o com o banco de dados.
|
|
|
|
|
*/
|
|
|
|
|
$conn = false;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Controla mensagens de erro.
|
|
|
|
|
*/
|
|
|
|
|
$ultMsg = '';
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
/*
|
|
|
|
|
* Armazena dados da ultima consulta.
|
|
|
|
|
*/
|
|
|
|
|
$oldAgt = array();
|
|
|
|
|
$olDac = array();
|
|
|
|
|
$numCile = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$shmKeyAgt = sCreateMemory(SHM_IPC_FILE_AGENTE, array(0, NUM_MAX_AGENTES_ON, TAM_SEGMENTO_AGENTE));
|
|
|
|
|
|
|
|
|
|
echo "IdFile: $shmKeyAgt\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Estabelece uma conex<EFBFBD>o com o banco de dados.
|
|
|
|
|
*/
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
$conn = sGetConnection();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Basicamente copia os dados da tabela supervisor agentes, e informa<EFBFBD><EFBFBD>es d
|
|
|
|
|
* as filas para memoria
|
|
|
|
|
*/
|
|
|
|
|
//$olDac = SetDadosDac($conn, $shmKeyDac, $olDac);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Basicamente copia os dados da tabela supervisor agentes, e informa<EFBFBD><EFBFBD>es d
|
|
|
|
|
* as filas para memoria
|
|
|
|
|
*/
|
|
|
|
|
$oldAgt = SetDadosAgente($conn, $shmKeyAgt, $oldAgt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Ciclo de atualiza<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
usleep((1000000 * 10));
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
echo $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Fecha os blocos de mem<EFBFBD>ria.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
ShmClose($shmKeyAgt);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
echo $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sGetConnection() {
|
|
|
|
|
/*
|
|
|
|
|
* Se precisar de uma conex<EFBFBD>o diferente da padr<EFBFBD>o, espcifique sua propria connection string.
|
|
|
|
|
* $connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL');
|
|
|
|
|
*/
|
|
|
|
|
$connStr = '';
|
|
|
|
|
$connStr = !$connStr ? GetDefStrDb() : $connStr;
|
|
|
|
|
$conn = pg_pconnect($connStr);
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel estabelecer uma conex<EFBFBD>o com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $conn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetDadosAgente($conn, $shmKeyAgt, $oldAgt = array()) {
|
|
|
|
|
$arDadosAgente = array();
|
|
|
|
|
$query = "select * from pbx_supervisor_agentes";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel consultar os dados do agente!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$arDadosAgente[$dados["nome"]] = $dados;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arDadosAgente = serialize($arDadosAgente);
|
|
|
|
|
|
|
|
|
|
if (!ShmWrite($shmKeyAgt, $arDadosAgente, 0)) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel gravar os dados do agente!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $arDadosAgente;
|
|
|
|
|
}
|
|
|
|
|
?>
|