forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.6 KiB
128 lines
3.6 KiB
#!/usr/bin/php -q |
|
<?php |
|
/* * ***************************************************************************************** |
|
* Data: 15/05/2015. |
|
* Autor: Amarildo Pereira |
|
* Descrição: Prove dados para sincronização de informaçõ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ço |
|
* devera acessar o banco de diponibilizar os dados em memoria para sincronização das |
|
* aplicacões clientes. |
|
* |
|
* Funcoes: |
|
* -sGetConnection -> Retorna uma conexão para o banco de dados. |
|
* -sGravaLog -> Grava log de erros gerados pelo serviço. |
|
* -sCreateMemory -> Aloca memoria para sincronização de dados. |
|
* ***************************************************************************************** */ |
|
error_reporting(E_ERROR); |
|
ini_set('display_errors', 0); |
|
ini_set("memory_limit", "512M"); |
|
|
|
/* |
|
* Inclui funçoes genéricas. |
|
*/ |
|
include("util/util.php"); |
|
include("util/sharedMem.php"); |
|
include("funcoes/ssupervisor_aux.php"); |
|
|
|
|
|
/* |
|
* Conexã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ão com o banco de dados. |
|
*/ |
|
if (!$conn) { |
|
$conn = sGetConnection(); |
|
} |
|
|
|
/* |
|
* Basicamente copia os dados da tabela supervisor agentes, e informações d |
|
* as filas para memoria |
|
*/ |
|
//$olDac = SetDadosDac($conn, $shmKeyDac, $olDac); |
|
|
|
/* |
|
* Basicamente copia os dados da tabela supervisor agentes, e informações d |
|
* as filas para memoria |
|
*/ |
|
$oldAgt = SetDadosAgente($conn, $shmKeyAgt, $oldAgt); |
|
|
|
|
|
/* |
|
* Ciclo de atualização. |
|
*/ |
|
usleep((1000000 * 10)); |
|
} catch (Exception $ex) { |
|
echo $ex->getMessage(); |
|
} |
|
} |
|
/* |
|
* Fecha os blocos de memória. |
|
*/ |
|
|
|
ShmClose($shmKeyAgt); |
|
} catch (Exception $ex) { |
|
echo $ex->getMessage(); |
|
} |
|
|
|
function sGetConnection() { |
|
/* |
|
* Se precisar de uma conexão diferente da padrã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ão foi possível estabelecer uma conexã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ão foi possí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ão foi possível gravar os dados do agente!"); |
|
} |
|
|
|
return $arDadosAgente; |
|
} |
|
?>
|